android 第三方登录 --- QQ

时间:2023-03-09 12:58:23
android 第三方登录 --- QQ

1,jar包

android 第三方登录 --- QQ

2,配置AndroidManifest.xml

 <activity android:name=".login.LoginActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent222222" />
<!-- 将222222换成自己的appid -->
</intent-filter>
</activity> <activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

3,LoginActivity调用

 //222222换成自己的appid
Tencent mTencent = Tencent.createInstance("222222", this.getApplicationContext());
//all获取全部
mTencent.login(this, "all", new IUiListener() {
@Override
public void onComplete(Object o) {
Log.i("返回",o.toString());
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
});
//注销
//mTencent.logout(this);

4,回调

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_LOGIN){
if(resultCode == Constants.ACTIVITY_OK){
Log.i("onActivityResult",data.getStringExtra("key_action"));
//如果少了这句,监听器的没效果。onComplete不会执行
Tencent.handleResultData(data,loginListener);
}
}
super.onActivityResult(requestCode, resultCode, data);
}

5,以上是授权获取openid。下边就是获取授权用户的基本信息了。授权成功后将onComplete(Object o)返回的数据设置到mTencent里

 try {
String token = object.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = object.getString(Constants.PARAM_EXPIRES_IN);
String openId = object.getString(Constants.PARAM_OPEN_ID);
//设置token
mTencent.setAccessToken(token, expires);
//设置openid
mTencent.setOpenId(openId);
} catch (JSONException e) {
e.printStackTrace();
}

6,拿到当前授权QQ号的昵称,头像之类的基本信息

 UserInfo userInfo = new UserInfo(this,mTencent.getQQToken());
//和上边授权的一样
userInfo.getUserInfo(new IUiListener(){...});