跳到主要内容

登录

信息

APK 游戏的账号授权走标准的 Oauth2 授权模式,在用户授权后获得迅雷用户的基本信息。

一、获取授权码 code

游戏方使用 SDK 进行授权登录请求接入。正确接入 SDK 并拥有相关授权与 scope 权限后,游戏应用会在终端本地拉起迅雷应用进行授权登录。

提示

如果安装了手机迅雷 6.15.* 以上版本,则唤醒调起手雷 APP 授权;

调用方法

import android.app.Activity;

import com.xunlei.niux.mobilegame.sdk.platform.NiuxMobileGameLoginListener;
import com.xovs.common.auth.base.SendAuth;

import com.xunlei.niux.mobilegame.sdk.platform.NiuxMobileGame;

NiuxMobileGame.getInstance().showLogin(Activity activity, SendAuth.Req req, NiuxMobileGameLoginListener listener)

调用方法后显示迅雷账号登录弹窗

调用参数说明

参数说明
activity待登录的 activity 上下文
req授权需要传入的参数,参考 demo
listenerNiuxMobileGameLoginListener 负责监听响应结果

NiuxMobileGameLoginListener 接口定义

public interface NiuxMobileGameLoginListener {

//登录结果回调
void onUserLoginResult(boolean isSuccess, int errorCode, String errorDesc, LoginUser loginUser);
//退出登录回调
void onUserLogout();
}
信息

isSuccess 是否成功;
errorCode 错误码;
errorDesc 具体的错误信息;
loginUser 是拥有 userid,accessToken 等必须信息的类。

调用示例

final SendAuth.Req req = new SendAuth.Req();

req.scope = "user profile verified offline check query report"; // 必须与迅雷侧提供的scope保持完全一致并且每个scope之间用空格隔开,迅雷授权登录必须有user
req.state = "your_state"; // 游戏方自定义字符值,response 返回的 state 同此值一致
req.responseType = "code"; // 固定 code

NiuxMobileGame.getInstance().showLogin(DemoActivity.this, req, new NiuxMobileGameLoginListener() {
@Override
public void onUserLoginResult(boolean isSuccess, int errorCode, String errorDesc, LoginUser loginUser) {
loginUser.userName = "游戏SDK测试";//最好传登录者的昵称
//成功做ui处理
if (isSuccess) {
NiuxMobileGame.getInstance().tryShowFloatView(DemoActivity.this);
}
NiuxMobileGame.getInstance().onLoginResult(isSuccess, loginUser, false);
}
});

响应 resp 说明

参数说明
code授权码
state请求时带的 state
errCode响应码

二、将 LoginUser 信息传入 SDK

在上一步游戏客户端获取到了 LoginUser ,这时需要将账号登录信息通过 LoginUser 传递给 SDK。

注意

这一步一定要做,因为 SDK 需要游戏方将授权登录的信息回写到 SDK ,才能判断登录态。

调用方法

import com.xunlei.niux.mobilegame.sdk.platform.NiuxMobileGame;
import com.xunlei.niux.mobilegame.sdk.vo.LoginUser;

/**
* 登录成功和失败都调用
* 失败 success=false,成功则 success=true
* isAutoLogin 表示是否自动登录,一般传 false
* loginUser 以下说明
*/
NiuxMobileGame.getInstance().onLoginResult(boolean success, LoginUser loginUser, boolean isAutoLogin)

调用示例

// 成功,上面可以通过onUserLoginResult回调来获得loginUser,这里可以根据需要来修改loginUser,比如userName属性
NiuxMobileGame.getInstance().onLoginResult(true, loginUser, false);

// 失败
NiuxMobileGame.getInstance().onLoginResult(false, null, false);

三、校验 access_token 有效性(非必须)

  • 方法 1:不用 SDK 提供的通过 code 换取 access_token 的方法,游戏接入方请求自身的后端通过 code 自己去换 access_token。

  • 方法 2:通过 SDK 提供的 code 换取 access_token 的方法拿到 access_token 和 user_id,后端通过 access_token 获取到用户信息,再比较返回到用户信息和 user_id 是不是对应的来判断是否合法。