跳到主要内容

Android

本文旨在介绍如何设置 VNG 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 VNG 渠道登录。

前提条件

1. 设置 VNG 应用

联系 VNG 以应用以下应用程序配置参数。

  1. VNG 游戏 ID
  2. appsFlyerDevKey(如果您已从 VNG 申请了 AppsFlyer)
  1. 获取 Player Network 控制台登录账号
  2. 为游戏创建新项目,或加入已有项目
  3. 下载 SDK
  4. 接入 SDK
  5. 在 Player Network 控制台添加 VNG 为业务的登录鉴权方式

步骤1:为 VNG 登录配置 SDK

  1. Assets/Plugins/Android/INTLVNG.androidlib/assets 下的 GTSDK.json 文件中设置以下值。

    {
    "gameID": "VNG_GameId",
    "appsFlyerDevKey": "VNG_appsFlyerDevKey",
    "gameVersion": "1.0.0"
    }
  2. 同时需要将二者填充到名为 GTSDK.json 文件中,并且放置到主工程的 assets 目录下。
    位置不能改变,文件名不能改变,因为 VNG 的 SDK 内部在指定目录下读取名为 GTSDK.json 中的内容。

  3. [可选] 如果 minSdkVersion 不匹配,请在 AndroidManifest.xml 中添加以下代码:

    <uses-sdk tools:overrideLibrary="vng.com.gtsdk,vng.com.gtsdk.gtloginkit,vng.com.gtstk.gtzingkit,com.intlgame.vng" />
  4. [Optional] 为 Unity,请参见 SDK 提供的 mainTemplate.gradle,添加对应的字段,如 androidDependenciesAdapter, intlChannelDespendencies, androidXDependencies, commonVersions, thirdChannel 中对应的字段。

    /*Intlvng_start*/
    Implementation rootproject.extRoidDePendenCiesadapter.appCompat
    Implementation rootproject.Ext.intlChanneneLDESPENDENCIES.ROFIT2GSON
    Implementation rootproject.Ext.intlChanneldespendenCies.FirebaseMessage
    Implementation rootproject.Ext.intlChanneldespendenCies.googlegcm
    Implementation rootproject.Ext.intlChannelDespendenCies.appsFlyer
    Implementation rootproject.Ext.intlChanneldespendenCies.installreferrerrrrrr
    Implementation rootproject.ext.androidXDependenCies.lifecycle
    /*Intlvng_end*/

步骤2:添加 VNG 登录

  1. 注册登录相关回调。

    // Add callbacks
    public void AddAuthObserver()
    {
    INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
    }

    // Remove callbacks
    public void RemoveAuthObserver()
    {
    INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
    }

    // Process the INTLAuthResult callback
    public void OnAuthResultEvent(INTLAuthResult ret)
    {
    Debug.Log($"MethodID: {ret.MethodId}");

    string methodTag = "";
    if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
    {
    methodTag = "Login";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
    {
    methodTag = "Bind";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
    {
    methodTag = "AutoLogin";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
    {
    methodTag = "QueryUserInfo";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
    {
    methodTag = "GetAuthResult";
    }
    }
  2. 调用 AutoLogin 接口自动登录。

    如果用户以前登录过,则可以调用 AutoLogin 界面。如果令牌在有效期内仍然有效,则登录成功。如果令牌失效,则会出现错误提示,游戏需要调用手动登录界面重新登录。

    INTLAPI.AutoLogin();
  3. 在自动登录失败时调用 Login 接口使玩家手动登录。

    INTLAPI.Login(INTLChannel.VNG, "", "");

    调用 API 后,将出现以下窗口:

    图片:Login Interface

    登录后返回的参数是:

    {
    "extraJson":"
    {
    }",
    "methodID":102,
    "retCode":0,
    "retMsg":"Success",
    "ret":0,
    "msg":"success",
    "bind_list":"",
    "birthday":"",
    "channel":"VNG",
    "channel_info":"
    {
    \"email\":\"null\",
    \"expire_ts\":1660373805,
    \"session_id\":\"MTSVN_23195b047d99a2b164296ab85cb956fa76e631657781803922\",
    \"social_id\":\"646605735\",
    \"update_in\":1657781803520,
    \"user_id\":\"2213855217680687104\",
    \"user_name\":\"mtschecking02\"
    }",
    "channelid":38,
    "confirm_code":"",
    "confirm_code_expireTime":0,
    "del_account_status":-10,
    "first_login":0,
    "gender":0,
    "legal_doc":"",
    "openid":"824624458301451",
    "pf":"unknown_uk-00000000-android-00000000-uk-MTSVN-824624458301451",
    "pf_key":"4c5a49c1407cfe7ab09fba44e343810e",
    "picture_url":"",
    "need_name_auth":false,
    "token":"bd13b7147297a5c58c27f414ea21ae00f67f2208",
    "token_expire_time":1660373805,
    "user_name":"mtschecking02"
    }
    警告

    user_id 是当前用户的唯一标识,请在客户服务界面使用。

  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

登出

用户可以注销当前登录渠道。他们需要调用接口 Logout 并传递相关参数。

INTLAPI.Logout();

步骤3:验收登录功能

在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。

如果接入过程中遇到问题,请参见 常见问题

其他功能

绑定

用户可以绑定已登录的 VNG 和其他渠道,如同步数据等操作。用户可以调用 Bind 接口并传递相关参数。

使用 Facebook 作为示例:

INTLAPI.Bind(INTLChannel.Facebook);

更多信息,请参见 Unity SDKUnreal Engine SDKBind 接口。

VNG 客户服务

VNG 提供客户服务,并通过 Player Network SDK 中的扩展提供支持。回调函数为:

string json="{\"user_id\":\"xxx\",\"login_type\":\"ZM\"}";;
INTLAPI.ExtendInvoke(INTLChannel.VNG, "showCustomerSupport",json);

JSON 中的内容包括以下字段,用户可根据需要填写:

名称字段说明备注
user_idstring登录用户 ID 需要
login_typestring用户登录类型 需要 (zing 对应: "zm")
role_namestring角色名称可选
levelstring角色级别可选
guildstring角色所属组别可选
contentstring角色 ID可选
server_idstring服务器 ID可选
login_type 的相应值是
登录渠道登录类型
GuestGU
FacebookFB
GoogleGG
ZingIDZM
LINELINE
AppleIDAP
EmailEM
ZaloZL
VNG IDCM

调用后将出现以下界面:

图片:Customer Service Service

关闭页面时将返回以下参数:

{
"extraJson":"
{

}",
"methodID":1301,
"retCode":0,
"retMsg":"Success",
"ret":0,
"msg":"",
"channel":"VNG",
"extend_method_name":"showCustomerSupport"
}