android 第三方登录 QQ
jopen
9年前
最新做第三方登录,由于个人马虎,害的自己折腾了一阵。这里只是简单的记一下
1,jar包
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(){...});