分享到 :

OEM应用市场登录/校验登录态

A、接口使用场景
    通过调用Tencent类的loginWithOEM函数发起登录/校验登录态,主要用于OEM应用市场分渠道计费参数需求。

B、接口说明
    该接口具有两个作用,1. 如果开发者没有调用mTencent实例的setOpenId、setAccessToken接口,则该接口执行正常的登录操作;2. 如果开发者先调用mTencent实例的setOpenId、setAccessToken接口,则该接口执行校验登录态的操作。如果登录态有效,则返回成功给app,如果登录态失效,则会自动进入登录流程,将最新的登录态数据返回给app。
    建议开发者在每次app启动时调用一次该接口(先调用setOpenId、setAccessToken),以确保每次打开app时用户都是有登录态的。

C、接口方法
    int com.tencent.tauth.Tencent.loginWithOEM(Activity activity, String scope, IUiListener listener, String registerChannel, String installChannel, String businessId)

D、参数说明调用登录接口的参数说明如下:

参数参数说明
activity调用者activity。应用使用SDK时,会从应用自己的Activity跳转到SDK的Activity,应用调用SDK的Activity即为这里的调用者activity。
scope应用需要获得哪些接口的权限,由“,”分隔。例如:
SCOPE = “get_simple_userinfo,add_topic”;所有权限用“all”
listener回调接口,IUiListener实例。
qrcode是否开启二维码登陆
registerChannel注册渠道
installChannel安装渠道
businessId业务ID
activity.mIntent(非方法参数)执行语句activity.getIntent().putExtra(AuthAgent.KEY_FORCE_QR_LOGIN, true);可以强制唤起扫码界面(无论是否安装手Q)

E、返回码说明
    0:正常
    -1: 异常
    1 : 使用Activity登陆
    2 : 使用H5登陆或显示下载页面

F、示例代码
    调用登录接口的示例代码如下:

private void doLogin() {
        IUiListener listener = new BaseUiListener() {
                @Override
                 protected void doComplete(JSONObject values) {
                        updateLoginButton();
                }
        };
        mTencent.loginWithOEM(this, SCOPE, listener, ”xxx”, ”xxx”, ”xxx”);
}

G、常见问题
    登录成功后listener无法成功回传数据。解决办法:在调用login的Activity或者Fragment重写onActivityResult方法,示例代码如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         If (requestCode == Constants.REQUEST_LOGIN) {
                 Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);
         }
        super.onActivityResult(requestCode, resultCode, data);
}
返回顶部