android 第三方登录 QQ

jopen 9年前

最新做第三方登录,由于个人马虎,害的自己折腾了一阵。这里只是简单的记一下

1,jar包

android 第三方登录 QQ - Jieth的个人页面

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(){...});


来自: http://my.oschina.net/Jieth/blog/591601