supersdk

文档中心

文档中心

下载文档

GTaSDK


GTaSDK 主要为游戏发行海外地区(港澳台除外)提供登录功能。

一、获取当前登录用户的账号信息

接口描述:获取用户账号是否绑定的信息以及 token 值。

注意:选择是否需要遮罩,在 true 时,调用该接口在界面上会有 loading 框,直到获取成功或失败,loading 框才会消失。

接口调用:

Map<String, Object> params = new HashMap<String, Object>();
params.put("isMask", true); // accountInfo 参数 isMask:true/false 是否需要 loading 框
SuperSDK.invoke("platform", "accountInfoJson", params);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if ("platform".equals(moduleName)
    && "accountInfoJson".equals(funcName)) {
    // accountInfo 回调
    accountInfo(result);
}
private void accountInfo(String result) {
        JSONObject json = JsonUtils.parseObject(result);
        int code = json.getIntValue("code");
        if(code != 1) {
            String msg = json.getString("msg");
            Log.e("result", "调用失败了: "+msg);
            return;
        }
        // 只有 code 为 1时 data 才有值
        JSONObject data = json.getJSONObject("data");// 1 是已绑定,其他否
        String gta = data.getString("gta");// 是否绑定了 gta 账号
        String facebook = data.getString("facebook");// 是否绑定了 facebook 账号
        String twitter = data.getString("twitter");// 是否绑定了 twitter 账号
        String google = data.getString("google");// 是否绑定了 google 账号
        String gamecenter = data.getString("gamecenter");// 是否绑定了 gamecenter 账号
        String token = data.getString("token");// 当前登录的 token 值
    }

日志打印:

{
    code : 1/0/xxx, // 1 获取成功,0 获取失败,xxx 其他错误码 没有可忽略
    msg  : xxx,
    data : {// 1 是已绑定,其他否
        "gta" : 1,// 是否绑定了 gta 账号
        "facebook" : 1,// 是否绑定了
        "twitter"  : 1,// 是否绑定了 twitter 账号
        "google"   : 1,// 是否绑定了 google 账号
        "gamecenter" : 1,// 是否绑定了 gamecenter 账号
        "token"    : xxx// 当前登录的 token 值
    }
}

二、弹出账号绑定页面

接口描述:根据 bindType 的对应的 value 值来跳转不同的绑定界面,绑定类型有 GTA、Facebook、Google。

接口调用:

Map<String, Object> params = new HashMap<String, Object>();
params.put("bindType", "GTA"); // showAccountLink 参数 bindType 取值为 GTA、Facebook、Google
SuperSDK.invoke("platform", "showAccountLinkJson", params);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if ("platform".equals(moduleName)
    &&  "showAccountLinkJson".equals(funcName)) {
    // showAccountLink 回调
    showAccountLink(result);
    }
private void showAccountLink(String result) {
        JSONObject json = JsonUtils.parseObject(result);
        int code = json.getIntValue("code");
        if(code != 1) {
            String msg = json.getString("msg");
            Log.e("result", "调用失败了: "+msg);
            return;
        }
        // 只有 code 为 1 时 data 才有值
        String data = json.getString("data"); //GTA 、 Facebook 、 Twitter 、Google 绑定账号的类型
        Log.e("result", "data: "+data);
    }

日志打印:

{
    code : 1/0/xxx,// 1 成功,0 失败,xxx 其他错误, code 没有可忽略
    msg  : xxx,
    data : GTA 、 Facebook 、 Twitter 、Google // 绑定账号的类型
}

三、获取 Facebook 登录的 FacebookID

接口描述:获取某用户在 facebook 中的用户 ID 号。

接口调用:

SuperSDK.invoke("platform", "getfbid", null);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if ("platform".equals(moduleName)
    &&  "getfbid".equals(funcName)) {
    // getfbid 回调
    getfbid(result);
    }
private void getfbid(String result) {
        JSONObject json = JsonUtils.parseObject(result);
        int code = json.getIntValue("code");
        if(code != 1) {
            String msg = json.getString("msg");
            Log.e("result", "调用失败了: "+msg);
            return;
        }
        String fbid = json.getString("data");// code = 1 可以获取到 fbid,失败获取不到
        Log.e("result", "data: "+fbid);
    }

日志打印:

{
    code : 1/0/xxx, 1获取成功,0没有使用FB登录或FB登录失败,xxx其他错误code 没有可忽略
    msg  : xxx,
    data : fbid // code = 1 可以获取到 fbid,失败获取不到
}

四、查询当前用户是否已绑定邮箱并返回邮箱

接口描述:查询当前用户是否已绑定邮箱。

接口调用:

SuperSDK.invoke("platform", "queryBindEmail", null);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if ("platform".equals(moduleName)
    &&  "queryBindEmail".equals(funcName)) {
    // queryBindEmail 回调
    queryBindEmail(result);
    }
private void queryBindEmail(String result) {
        JSONObject json = JsonUtils.parseObject(result);
        int code = json.getIntValue("code");
        if(code != 1) {
            String msg = json.getString("msg");
            Log.e("result", "调用失败了: "+msg);
            return;
        }
        // 只有 code 为 1 时 data 才有值
        String email = json.getString("data");// code = 1 可以获取此值
        Log.e("result", "data: "+email);
    }

日志打印:

{
    code : 1/0/xxx,// 1 已绑定,0 未绑定,xxx 其他查询失败 code,没有可忽略 
    msg  : xxx,
    data : email// code = 1 可以获取此值
}

五、查询 GTa 用户的用户名

接口描述:查询 GTa 用户的用户名。

接口调用:

SuperSDK.invoke("platform", "queryGTaUserName", null);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if ("platform".equals(moduleName)
    &&  "queryGTaUserName".equals(funcName)) {
    // queryGTaUserName回调
    queryGTaUserName(result);
    }
private void queryGTaUserName(String result) {
        JSONObject json = JsonUtils.parseObject(result);
        int code = json.getIntValue("code");
        if(code != 1) {
            String msg = json.getString("msg");
            Log.e("result", "调用失败了: "+msg);
            return;
        }
        // 只有 code 为 1 时 data 才有值
        String username = json.getString("data");// code = 1 可以获取此值
        Log.e("result", "data: "+username);
    }

日志打印:

{
    code : 1/0/xxx,// 1 成功,xxx 其他查询失败 code,没有可忽略 
    msg  : "success",
    data : "1003265311@qq.com"// code = 1 可以获取此值
}

六、打开绑定邮箱页面

接口描述:打开绑定邮箱页面让用户绑定密保邮箱。

接口调用:

SuperSDK.invoke("platform", "showBindEmail", null);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if ("platform".equals(moduleName)
    &&  "showBindEmail".equals(funcName)) {
    // showBindEmail 回调
    showBindEmail(result);
    }
private void showBindEmail(String result) {
        JSONObject json = JsonUtils.parseObject(result);
        int code = json.getIntValue("code");
        if(code != 1) {
            String msg = json.getString("msg");
            Log.e("result", "调用失败了: "+msg);
            return;
        }
        // 只有 code 为 1 时 data 才有值
        String email = json.getString("data");// code = 1 可以获取此值
        Log.e("result", "data: "+email);
    }

日志打印:

{
    code : 1/0/xxx,// 1 绑定成功,0 绑定失败,xxx 其他错误, code 没有可忽略
    msg  : xxx,
    data : email// code = 1 可以获取此值
}

七、游戏自定义设置 SDK 语言

接口描述:传入 GTa 语言参数可更换 GTa 和客服语言。

接口调用:

Map<String,String> lang = new HashMap<>();
lang.put("languagePath","zh_cn"); // 参数 languagePath 取值为语言标识符,比如:zh_cn、zh、en、de 等
SuperSDK.invoke("platform","setLanguagePath", lang);

参数 支持以下几种语言(16种):

语言标识符 语言描述
ar 阿拉伯语
de 德语
en 英语
es 西班牙语
fr 法语
in 印尼语
ja 日文
ko 韩语
pl 波兰语
pt 葡萄牙语
ru 俄语
th 泰语
tr 土耳其语
zh 中文繁体
zh_cn 中文简体
vi 越南语

八、游客单登录

接口描述:游客单登录接口,自动创建并登录游客,不弹出游客登录框(静默登录)。

注意:该接口适用于 SuperSDK 母包。

接口调用:

SuperSDK.invoke("platform", "GuestSingleLogin", null);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if("platform".equals(moduleName)
        && "GuestSingleLogin".equals(funcName)){
    // TODO 处理回调 json 信息
    JSONObject json = JsonUtils.parseObject(result);
    int code = json.getIntValue("code");
    if (code != 1) {
        // 游戏在这里处理登录失败的逻辑
        Log.d("result", "调用失败:" + json.getString("msg"));
        return;
    }
    // 获取 data 里面的值
    JSONObject data = json.getJSONObject("data");
    // 以下参数,游戏服务器验证会用到,建议游戏把这一步放到服务器端解析
    String token = data.getString("osdk_ticket");
    String str = EncryptUtils.deBase64fromString(token);
    JSONObject jsonObj2 = JsonUtils.parseObject(str);
    String userId = jsonObj2.getString("osdk_user_id");
}

日志打印:

moduleName:platform
funcName:GuestSingleLogin
result:{
        "code":1,
        "data":{
            "msg":"登录成功",
            "osdk_ticket":"eyJvc2RrX2dhbWVfaWQiOiIxOTYzNzc4NDQiLCJ1c2VyX2lkIjoiMTY3MDQ5MjUyOTE3MjIyNDUyNTYyODg5NSIsImxvZ2luX3Nka19uYW1lIjoiZ3RhcmNhZGUiLCJjaGFubmVsX2lkIjoiMCIsImV4dGVuZCI6IjIxNzN8NDA4fDE3NDciLCJhY2NvdW50X3N5c3RlbV9pZCI6IjAwNjAwMTUiLCJvc2RrX3VzZXJfaWQiOiIwMDYwMDE1XzE2NzA0OTI1MjkxNzIyMjQ1MjU2Mjg4OTUiLCJpcCI6IjQ1LjQwLjYwLjIxNyIsImNvdW50cnkiOiJVUyIsInRpbWUiOjE2NzA0OTQ2MjIsInNpZ24iOiJiMmE4YThjMjVmMTM1ZjM1YjA1MThhMTM3YzBhNGY3ZiJ9",
            "status":1,
            "userinfo":{
                "login_sdk_name":"gtarcade",
                "user_id":"1670492529172224525628895"
            }
        },
        "msg":"GuestSingleLogin success"
    }

九、游客升级

接口描述:游客升级接口。

注意:该接口只有升级成功时有回调。

接口调用:

SuperSDK.invoke("platform", "guestUpgrade", null);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if("platform".equals(moduleName) && "guestUpgrade".equals(funcName)) {
    // TODO 处理回调 json 信息
}

日志打印:

{
    code : 1,// 1 成功,xxx 其他错误, code 没有可忽略
    msg  : "GuestUpgrade Success"
}

十、第三方登录

接口描述:可选择第三方登录方式。

登录方式:GTALogin、FacebookLogin、GoogleLogin。

接口调用:

Map<String, String> params = new HashMap<>();
params.put("otherFuncName", "GoogleLogin"); // GTALogin、FacebookLogin、GoogleLogin
SuperSDK.invoke("platform", "otherFunction", params);

十一、获取商品信息

说明:参考 海外拓展接口

十二、用户隐私协议

接口描述:打开用户隐私协议。

注意:只支持日本地区。

接口调用:

Map<String, String> params = new HashMap<>();
params.put("type", "JP");// 用户隐私地区(必须)。如:GDPR:gta 通用协议   JP: 日本
SuperSDK.invoke("platform", "openUserAgreement", params);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if("platform".equals(moduleName) && "openUserAgreement".equals(funcName)) {
    // TODO 处理回调 json 信息
}

日志打印:

moduleName:platform
funcName:openUserAgreement
result:{
    "code":1, // 1/xxx,  1 表示已经同意用户隐私,xxx 表示未同意用户隐私
    "msg":"已经同意用户隐私",
    "data":"JP"
}

十三、充值合规

注意:该接口目前暂时只支持日本地区,日本地区的游戏在每次充值前都需要调用该接口。

接口调用:

Map<String, String> params = new HashMap<>();
params.put("country", "JP"); // 传入限制的国家(目前暂时只支持日本) 必须。如:JP
params.put("amount", "120"); // 传入充值金额(需要和打包工具上配置的一样,日本规定只能使用日元) 必须
SuperSDK.invoke("platform", "payCompliance", params);

接口回调:

// OnSuperSDKListener 的 onSuperSDK 方法回调结果,解析后判断
if("platform".equals(moduleName) && "payCompliance".equals(funcName)) {
    // TODO 处理回调json信息
}

日志打印:

moduleName:platform
funcName:payCompliance
result:{
    "code":1, // 1/xxx,  1 表示可以充值, xxx 表示不可以充值
    "msg":"日分充值限制返回 Success, code = 0, msg = 可以充值"
}