安卓第三方登录qq

在腾讯开放平台下载sdk,另外需要提交审核,若想iOS与安卓共用同一个APPID,可先创建iOS或安卓应用后,点击页面右上角的关联再创建另外一个,这样APPID就是同一个了。

下面贴关于QQ登录的代码,需要的权限和AndroidManifest里面的配置在文档有

public void login_qq() {
// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
// 其中APP_ID是分配给第三方应用的appid,类型为String。
mTencent = Tencent.createInstance(Constants.APP_ID_QQ, this.getApplicationContext());
if (!mTencent.isSessionValid()) {
mTencent.login(this, "all", loginListener);
}
}

IUiListener loginListener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
initOpenidAndToken(values);
updateUserInfo();
}
};

//初始化QQ的openid和token,这一步是必须要的   这个地方,文档中包括有一些百度来的经验中没有提到(也许是我看的还不够仔细=-=),这是很重要的一步
static String openId;

public static void initOpenidAndToken(JSONObject jsonObject) {
try {
String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
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) {
}
}

private void updateUserInfo() {
if (mTencent != null && mTencent.isSessionValid()) {
IUiListener listener = new IUiListener() {
@Override
public void onError(UiError e) {

}

@Override
public void onComplete(final Object response) {
Message msg = new Message();
msg.obj = response;
msg.what = 0;
mHandler.sendMessage(msg);

}

@Override
public void onCancel() {

}
};
UserInfo mInfo = new UserInfo(this, mTencent.getQQToken());
mInfo.getUserInfo(listener);

} else {
}
}

Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
JSONObject response = (JSONObject) msg.obj;
QQUserInfo info = new Gson().fromJson(response.toString(), QQUserInfo.class);
String nickname = info.getNickname();
String headimgurl = info.getFigureurl_qq_2();
//这里通过解析就拿到了QQ的用户名和头像地址,根据应用中需要的操作,这一步算是完成了QQ登录
}
}
};
原文地址:https://www.cnblogs.com/moonwhite/p/5817986.html