您的位置:首页 > 移动开发 > Android开发

解决 {"ret":100030,"msg":"this api without user authorization"} android QQ第三发登录成功后获取用户信息失败的问题

2017-06-01 14:37 846 查看
在使用QQ第三发登录时,登录成功后,去获取用户信息的时候,却出现这个错误:

{"ret":100030,"msg":"this api without user authorization"}

经过查找资料,发现问题出在缺少权限,还缺少一步验证,请看代码。

登录授权:

     

    

      获取用户信息授权:

       


public void qqLogin()
{
tencent = Tencent.createInstance(Cons.QQ_APPID, this.getApplicationContext());
if (!tencent.isSessionValid()){
tencent.login(this, "tt", new IUiListener() {
@Override
public void onComplete(Object o) {
Log.i("zdbb tencent","cnComplete "+o);
JSONObject jo = (JSONObject) o;
String openID = jo.optString("openid");
String accessToken = jo.optString("access_token");
String expires = jo.optString("expires_in");
tencent.setOpenId(openID);
tencent.setAccessToken(accessToken, expires);

}

@Override
public void onError(UiError uiError) {
Log.i("zdbb tencent","onError "+uiError.errorDetail);
}

@Override
public void onCancel() {
Log.i("zdbb tencent","onCancel ");
}
});

}
}

void getQQUserInfo(){
Log.i("zdbb tencent","获取用户信息。。。 ");

UserInfo userInfo = new UserInfo(LoginActivity.this,tencent.getQQToken());
userInfo.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object obj) {
try {
JSONObject jsonObject = (JSONObject) obj;
int ret = jsonObject.getInt("ret");
if(ret==100030){
//缺少权限,需要增量授权
Runnable r = new Runnable() {
@Override
public void run() {
tencent.reAuth(LoginActivity.this, "all", new IUiListener() {
@Override
public void onComplete(Object o) {
}

@Override
public void onError(UiError uiError) {
}

@Override
public void onCancel() {
}
});
}
};
LoginActivity.this.runOnUiThread(r);
}else{
Log.d("zdbb tencent","用户信息 "+jsonObject);
}
} catch (JSONException e) {
e.printStackTrace();
}

}

@Override
public void onError(UiError uiError) {
Log.i("zdbb tencent","uiError "+uiError.errorDetail);
}

@Override
public void onCancel() {
Log.i("zdbb tencent","onCancel ");
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐