Android
本文旨在介绍如何设置 VNG 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 VNG 渠道登录。
前提条件
1. 设置 VNG 应用
联系 VNG 以应用以下应用程序配置参数。
- VNG 游戏 ID
- appsFlyerDevKey(如果您已从 VNG 申请了 AppsFlyer)
步骤1:为 VNG 登录配置 SDK
在
Assets/Plugins/Android/INTLVNG.androidlib/assets
下的GTSDK.json
文件中设置以下值。{
"gameID": "VNG_GameId",
"appsFlyerDevKey": "VNG_appsFlyerDevKey",
"gameVersion": "1.0.0"
}同时需要将二者填充到名为
GTSDK.json
文件中,并且放置到主工程的assets
目录下。
位置不能改变,文件名不能改变,因为 VNG 的 SDK 内部在指定目录下读取名为GTSDK.json
中的内容。[可选] 如果 minSdkVersion 不匹配,请在
AndroidManifest.xml
中添加以下代码:<uses-sdk tools:overrideLibrary="vng.com.gtsdk,vng.com.gtsdk.gtloginkit,vng.com.gtstk.gtzingkit,com.intlgame.vng" />
[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 登录
注册登录相关回调。
- Unity
- Unreal Engine
// 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";
}
}C++ Event Handling (above v1.15)
//configure callback
FINTLAuthEvent authEvent;
authEvent.AddUObject(this, &OnAuthResult_Implementation);
UINTLSDKAPI::SetAuthResultObserver(authEvent);
// Remove callbacks
UINTLSDKAPI::GetAuthResultObserver().Clear();void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}Unreal Event Handling
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}调用
AutoLogin
接口自动登录。如果用户以前登录过,则可以调用
AutoLogin
界面。如果令牌在有效期内仍然有效,则登录成功。如果令牌失效,则会出现错误提示,游戏需要调用手动登录界面重新登录。- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
在自动登录失败时调用
Login
接口使玩家手动登录。- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.VNG, "", "");
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelVNG);
调用 API 后,将出现以下窗口:
登录后返回的参数是:
{
"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 是当前用户的唯一标识,请在客户服务界面使用。
与游戏后台同步客户端身份验证状态,等待最终验证结果。
登出
用户可以注销当前登录渠道。他们需要调用接口 Logout
并传递相关参数。
- Unity
- Unreal Engine
INTLAPI.Logout();
UINTLSDKAPI::Logout();
步骤3:验收登录功能
在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。
如果接入过程中遇到问题,请参见 常见问题。
其他功能
绑定
用户可以绑定已登录的 VNG 和其他渠道,如同步数据等操作。用户可以调用 Bind
接口并传递相关参数。
使用 Facebook 作为示例:
- Unity
- Unreal Engine
INTLAPI.Bind(INTLChannel.Facebook);
UINTLSDKAPI::Bind(EINTLLoginChannel::kChannelFacebook);
更多信息,请参见 Unity SDK 或 Unreal Engine SDK 的 Bind
接口。
VNG 客户服务
VNG 提供客户服务,并通过 Player Network SDK 中的扩展提供支持。回调函数为:
- Unity
- Unreal Engine
string json="{\"user_id\":\"xxx\",\"login_type\":\"ZM\"}";;
INTLAPI.ExtendInvoke(INTLChannel.VNG, "showCustomerSupport",json);
FString json="{ \"user_id\":\"xxx\",\"login_type\":\"ZM\"}";;
UINTLSDKAPI::ExtendInvoke(EINTLLoginChannel::kChannelVNG, "showCustomerSupport",json);
JSON 中的内容包括以下字段,用户可根据需要填写:
名称 | 字段 | 说明 | 备注 |
---|---|---|---|
user_id | string | 登录用户 ID | 需要 |
login_type | string | 用户登录类型 | 需要 (zing 对应: "zm") |
role_name | string | 角色名称 | 可选 |
level | string | 角色级别 | 可选 |
guild | string | 角色所属组别 | 可选 |
content | string | 角色 ID | 可选 |
server_id | string | 服务器 ID | 可选 |
登录渠道 | 登录类型 |
---|---|
Guest | GU |
FB | |
GG | |
ZingID | ZM |
LINE | LINE |
AppleID | AP |
EM | |
Zalo | ZL |
VNG ID | CM |
调用后将出现以下界面:
关闭页面时将返回以下参数:
{
"extraJson":"
{
}",
"methodID":1301,
"retCode":0,
"retMsg":"Success",
"ret":0,
"msg":"",
"channel":"VNG",
"extend_method_name":"showCustomerSupport"
}