Android 第三方登录(一)QQ登录
前言
准备:QQ开放平台申请KEY,导 JAR 包等 (过程忽略,相信大家都会)
1.实例化Tencent
private Tencent mTenctnt;
private QQLoginListener mListener;
private Oauth2AccessToken mAccessToken
private void initView() {
mListener = new QQLoginListener();
if (mTenctnt == null) {
mTenctnt = Tencent.createInstance(Urls.QQ_APPID, this);
}
}
2.开始登录
private void startQQLogin() {
//如果session不可用,则登录,否则说明已经登录
if (!mTenctnt.isSessionValid()) {
mTenctnt.login(this, "all", mListener);
}
}
3.QQLoginListener 方法
public class QQLoginListener implements IUiListener {
@Override
public void onComplete(Object o) {
re_load.setVisibility(View.VISIBLE);
//获取openid和token
initOpenIdAndToken(o);
//获取用户信息
getQQUserInfo();
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
private void initOpenIdAndToken(Object o) {
JSONObject jsonObject = (JSONObject) o;
try {
String openID = jsonObject.getString("openid");
code = openID;
String access_token = jsonObject.getString("access_token");
String expires = jsonObject.getString("expires_in");
mTenctnt.setOpenId(openID);
mTenctnt.setAccessToken(access_token, expires);
} catch (JSONException e) {
e.printStackTrace();
}
}
private void getQQUserInfo() {
QQToken token = mTenctnt.getQQToken();
mInfo = new UserInfo(WXEntryActivity.this, token);
mInfo.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object o) {
JSONObject jsonObject = (JSONObject) o;
try {
nickName = jsonObject.getString("nickname");
avatorUrls = jsonObject.getString("figureurl_qq_2");
cityName = jsonObject.getString("city");
String sex_s = jsonObject.getString("gender");
if (sex_s.equals("男")) {
sex = 1;
} else {
sex = 2;
}
proviceName = jsonObject.getString("province");
OtherRegister(code, 3);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Toasty.error(getApplicationContext(), "QQ登录失败").show();
}
@Override
public void onCancel() {
Toasty.info(getApplicationContext(), "QQ登录取消").show();
}
});
}
记得在onActivityResult中
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//TODO QQ
mTenctnt.onActivityResultData(requestCode, resultCode, data, mListener);
}
以上,QQ 登录
记录于 2018/11/15 15:17