哎~ 还得一个一个找.
1.注册腾讯开发者账号,并登录账号.
一些简单的就一笔带过.不详细讲解.因为谁都可以做.
这是开发者官方:http://wiki.open.qq.com/wiki/%E9%A6%96%E9%A1%B5
>需要注意的是 注册账号并且账号是审核阶段的时候是无法测试的.会出现 104001错误
>申请应用的时候如果是测试阶段,测试的QQ账号只能是自己在开发者里注册的QQ账号.
所谓的测试阶段是提交审核之前.但是必须得走到上传APK文件的那一步
2.登录代码
public void tecentLogin(){ if (mTencent==null){ mTencent=Tencent.createInstance(getString(R.string.tencent_qq_key), getApplicationContext()); } if (mTecentListener!=null){ if (!mTencent.isSessionValid()){ mTencent.login(this, QQ_LOGIN_SCOPE, mTecentListener); } }else{ MakeContent.getInstance().ContextMake(mContext,getString(R.string.tencent_callback_hint)); } }
IUiListener mTecentListener=new IUiListener() { @Override public void onComplete(Object o) { MakeContent.getInstance().ContextLoggerInfo(o.toString()); JSONObject jsonObject= (JSONObject) o; initOpenidAndToken(jsonObject); getQQUserInfo(); } @Override public void onError(UiError uiError) { MakeContent.getInstance().ContextLoggerInfo(uiError.errorMessage); } @Override public void onCancel() { } };
下面是非常重要的一个方法. 在这里腾讯Doc里没有说明.所以我找了很久.
那就如果想要获取 QQ用户信息的话 必须对Tencent的进行初始化
public void initOpenidAndToken(JSONObject jsonObject) { try { String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN); String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN); // TODO: 16. 8. 29. 개발할 때 이 openID로 가져가면 될 거 같다 String openId = jsonObject.getString(Constants.PARAM_OPEN_ID); if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) { mTencent.setAccessToken(token, expires); mTencent.setOpenId(openId); } } catch(Exception e) { } }
3.获取用户信息
private void getQQUserInfo() { if (mTencent != null && mTencent.isSessionValid()) { IUiListener listener = new IUiListener() { @Override public void onError(UiError e) { } @Override public void onComplete(final Object response) { try{ if (response!=null){ //QQ정보를 가져온다 QQInfoData qqInfoData=new Gson().fromJson(response.toString(),QQInfoData.class); } MakeContent.getInstance().ContextLoggerInfo("onComplete:"+response); }catch (Exception e){ } } @Override public void onCancel() { } }; tencentQQInfo = new UserInfo(this, mTencent.getQQToken()); tencentQQInfo.getUserInfo(listener); } else { } }
好了,困扰我半天的代码终于解决了。
没有评论:
发表评论