Server-Side登录模式
A、接口使用场景
通过调用Tencent类的loginServerSide函数发起Server-Side模式登录。
B、接口说明
调用该接口,会启动一个交互界面,完成用户登录和授权的交互流程,通过回调得到server返回的code和openId。其中code的值保存在access_token字段里面。
当安装了手机QQ时,SDK会启用手机QQ的特定Activity,通过此Activity完成登录和授权功能。 当没有找到此Activity时,SDK会执行Oauth2.0的User-Agent流程,即显示一个包含WebView的对话框, 通过加载登录授权网页来完成登录和授权的交互流程。
C、接口方法
public int com.tencent.tauth.Tencent.loginServerSide(Activity activity, String scope, IUiListener listener)
public int com.tencent.tauth.Tencent.loginServerSide(Fragment fragment, String scope, IUiListener listener)
D、参数说明
调用登录接口的参数说明如下:
参数 | 参数说明 |
activity | 调用者activity。应用使用SDK时,会从应用自己的Activity跳转到SDK的Activity,应用调用SDK的Activity即为这里的调用者activity。 |
scope | 应用需要获得哪些接口的权限,由“,”分隔。例如: SCOPE = “get_simple_userinfo,add_topic”;所有权限用“all” |
listener | 回调接口,IUiListener实例。 |
qrcode | 是否开启二维码登录,没有安装手Q时候使用二维码登录,一般用电视等设备。 |
activity.mIntent(非方法参数) | 执行语句activity.getIntent().putExtra(AuthAgent.KEY_FORCE_QR_LOGIN, true);可以强制唤起扫码界面(无论是否安装手Q) |
E、返回码说明
0:正常
-1: 异常
1 : 使用Activity登陆
2 : 使用H5登陆或显示下载页面
F、示例代码
调用Server-Side模式登录接口的示例代码如下:
private void doLogin() { IUiListener listener = new BaseUiListener() { @Override protected void doComplete(JSONObject values) { updateLoginButton(); } }; mTencent.loginServerSide(this, SCOPE, listener); } |
G、获取登录成功后的返回数据
在调用login的Activity或者Fragment重写onActivityResult方法,示例代码如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { If (requestCode == Constants.REQUEST_LOGIN) { Tencent.onActivityResultData(requestCode,resultCode,data,listener); } super.onActivityResult(requestCode, resultCode, data); } |