登录
信息
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 |
listener | NiuxMobileGameLoginListener 负责监听响应结果 |
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 是不是对应的来判断是否合法。