QQ登录
登录/授权
通过调用Tencent类的login函数发起登录/校验登录态。
该API具有两个作用:
(1)如果开发者没有调用mTencent实例的setOpenId、setAccessToken API,则该API执行正常的登录操作;
(2)如果开发者先调用mTencent实例的setOpenId、setAccessToken API,则该API执行校验登录态的操作。如果登录态有效,则返回成功给应用,如果登录态失效,则会自动进入登录流程,将最新的登录态数据返回给应用。
建议开发者在每次应用启动时调用一次该API(先调用setOpenId、setAccessToken),以确保每次打开应用时用户都是有登录态的。
调用登录API的示例代码如下:
private void doLogin() {
IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
updateLoginButton();
}
};
mTencent.login(this, SCOPE, listener);
}
调用登录API参数说明如下:
| 参数 | 参数说明 |
|---|---|
| activity | 调用者activity。应用使用SDK时,会从应用自己的Activity跳转到SDK的Activity,应用调用SDK的Activity即为这里的调用者activity。 |
| scope | 应用需要获得哪些API的权限,由“,”分隔。 例如:SCOPE = “get_user_info,add_t”;所有权限用“all” |
| listener | 回调API,IUiListener实例。 |
注:在某些低端机上调用登录后,由于内存紧张导致APP被系统回收,登录成功后无法成功回传数据。
解决办法如下
在调用login的Activity或者Fragment重写onActivityResult方法,示例代码如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == Constants.REQUEST_API) {
if(resultCode == Constants.RESULT_LOGIN) {
mTencent.handleLoginData(data, loginListener);
}
super.onActivityResult(requestCode, resultCode, data);
}
1.2 注销
通过调用Tencent类的logout函数注销。
调用注销API的示例代码如下:
mTencent.logout(this);
调用注销API参数说明如下:
| 参数 | 参数说明 |
|---|---|
| context | 调用者的context。Context是上下文的意思,每一个Activity都有对应的Context。示例中的this为调用者Activity对应的Context。 |
