我也不怎么会整理知识点, 就是把自己用到的QQ登录步骤以及源码拷过来,供以后学习查看,希望大家指点互相学习。
说起QQ登录,大家在熟悉不过,今天我把具体的实现步骤和注释写出:
一,导入QQ登录需要的jar包
下载地址:
http://download.csdn.net/detail/baidu_28842815/9751446
二,写入AndroidManifest.xml
<!-- TODO GAME SDK QQ接入配置 START -->
<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="tencent1105782337" />
<!-- TODO GAME 这里为游戏QQ登录的配置,游戏需要修改为自己手Q的appid -->
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- TODO GAME SDK QQ接入配置 END -->
注意data中tencent必须有,后跟自己已应用包名在“腾讯开放平台”上申请的appid
以下是平台地址:http://open.qq.com/ 上方找到应用接入
<data android:scheme="tencent1105782337" />
三,在Java代码编写具体实现步骤
1.导入import
private Tencent mTencent;
private IUiListener loginListener;
2.创建对象
mTencent = Tencent.createInstance(appid, this);
3.添加授权登录监听器
loginListener = new IUiListener() {
@Override
public void onError(UiError error) {
Log.i(TAG, "登录失败" + error);
LoginActivity.this.finish();
}
@Override
public void onComplete(Object value) {
if (value == null) {
return;
}
try {
JSONObject json = (JSONObject) value;
int ret = json.getInt("ret");
Log.i(TAG, "QQ登录返回json:" + json.toString());
if (ret == 0) {
final String accessToken = json.getString("access_token");
final String openid = json.getString("openid");
final String expires_in = json.getString("expires_in");
/**如果后台需要openid来做登录处理,在此处编写网络请求*/
mTencent.setOpenId(openid);
mTencent.setAccessToken(accessToken, expires_in);
QQToken qqToken = mTencent.getQQToken();
UserInfo info = new UserInfo(activity, qqToken);
/** 获取用户部分信息监听器*/
info.getUserInfo(new IUiListener() {
@Override
public void onError(UiError error) {
}
@Override
public void onComplete(Object value) {
JSONObject json = (JSONObject) value;
Log.i(TAG, "QQ登录返回用户信息:" + json.toString());
}
@Override
public void onCancel() {
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onCancel() {
Log.i(TAG, "登录取消");
LoginActivity.this.finish();
}
};
4.点击QQ登录按钮
// 如果session无效,就开始登录
if (!mTencent.isSessionValid()) {
// 要所有权限,"all",不然会再次申请增量权限
mTencent.login(activity, "all", loginListener);
}
5.做登录返回数据接收
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);
}
这一步必不可少!
好了,QQ登录实现到此为止,希望对大家有用!
QQAPI: