账号注册及认证
使用 Facebook 账号进行会员注册和认证。 iOS、Android 均可使用。
调用信息
SocialSignIn(string facebookAccessToken, string accountType, PlayNANOODelegate callback) {}
调用详细信息
| 参数 | 说明 | 类型 |
|---|---|---|
| facebookAccessToken | Facebook AccessToken | String |
| accountType | 账号类型 | String |
| callback | 通信结果 | PlayNANOODelegate |
源代码
using PlayNANOO;
using Facebook.Unity;
public class PlayNANOOExample : MonoBehaviour
{
Plugin plugin;
void Start()
{
plugin = Plugin.GetInstance();
if (!FB.IsInitialized)
{
FB.Init(OnFBInitComplete, OnFBHideUnity);
}
else
{
FB.ActivateApp();
}
}
void OnFBInitComplete()
{
if (FB.IsInitialized)
{
FB.ActivateApp();
}
else
{
Debug.Log("Failed to Initialize the Facebook SDK");
}
}
void OnFBHideUnity(bool isShow)
{
if (!isShow)
{
Time.timeScale = 0;
}
else
{
Time.timeScale = 1;
}
}
public void FacebookSignIn()
{
var para = new List<string>() { "public_profile", "email" };
FB.LogInWithReadPermissions(para, FacebookAuthCallback);
}
void FacebookAuthCallback(ILoginResult result)
{
if (FB.IsLoggedIn) {
// PlayNANOO 认证
plugin.AccountManagerV20240401.SocialSignIn(result.AccessToken.TokenString, Configure.PN_ACCOUNT_FACEBOOK, (status, errorCode, jsonString, values) =>
{
if (status.Equals(Configure.PN_API_STATE_SUCCESS))
{
Debug.Log(values["access_token"].ToString());
Debug.Log(values["refresh_token"].ToString());
Debug.Log(values["uuid"].ToString());
Debug.Log(values["openID"].ToString());
Debug.Log(values["nickname"].ToString());
Debug.Log(values["linkedID"].ToString());
Debug.Log(values["linkedType"].ToString());
Debug.Log(values["purchaseCount"].ToString());
Debug.Log(values["purchaseTotalPrice"].ToString());
Debug.Log(values["purchaseCurrencyCode"].ToString());
Debug.Log(values["purchaseVoidedCount"].ToString());
Debug.Log(values["purchaseVoidedTotalPrice"].ToString());
Debug.Log(values["purchaseVoidedCurrencyCode"].ToString());
Debug.Log(values["country"].ToString());
Debug.Log(values["timezone"].ToString());
Debug.Log(values["offset"].ToString());
Debug.Log(values["joinPeriod"].ToString());
}
else
{
if (values != null)
{
if (values["ErrorCode"].ToString() == "30007")
{
Debug.Log(values["WithdrawalKey"].ToString());
}
else if (values["ErrorCode"].ToString() == "70002")
{
Debug.Log(values["BlockKey"].ToString());
}
else
{
Debug.Log("Fail");
}
}
else
{
Debug.Log("Fail");
}
}
});
}
else
{
Debug.Log("Login Cancel");
}
}
}
通信结果
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"Token" : {
"AccessToken" : "String",
"RefreshToken" : "String"
},
"Player" : {
"UserUniqueID" : "String",
"OpenID" : "String",
"Nickname" : "String",
"LinkedID" : "String",
"LinkedType" : "String",
"PurchaseCount" : "Integer",
"PurchaseTotalPrice" : "Double",
"PurchaseCurrencyCode" : "String",
"PurchaseVoidedCount" : "Integer",
"PurchaseVoidedTotalPrice" : "Double",
"PurchaseVoidedCurrencyCode" : "String",
"Country" : "String",
"Timezone" : "String",
"Offset" : "Integer",
"JoinPeriod" : "Integer"
}
}
通信结果详细信息
| 数据键 | 说明 | 类型 |
|---|---|---|
| Token.AccessToken | 玩家访问令牌 | string |
| Token.RefreshToken | 玩家刷新令牌 | string |
| Player.UserUniqueID | 玩家唯一识别 ID | string |
| Player.OpenID | 玩家唯一识别 Open ID | string |
| Player.Nickname | 玩家昵称 | string |
| Player.LinkedID | 玩家关联识别 ID | string |
| Player.LinkedType | 玩家关联类型 | string |
| Player.PurchaseCount | 玩家支付次数 | integer |
| Player.PurchaseTotalPrice | 玩家支付累计金额 | double |
| Player.PurchaseCurrencyCode | 玩家支付货币 | string |
| Player.PurchaseVoidedCount | 玩家退款次数 | integer |
| Player.PurchaseVoidedTotalPrice | 玩家退款累计金额 | double |
| Player.PurchaseVoidedCurrencyCode | 玩家退款货币 | string |
| Player.Country | 玩家国家代码 | string |
| Player.Timezone | 玩家国家时区 | string |
| Player.Offset | 玩家时区时差(基于 UTC) | integer |
| Player.JoinPeriod | 玩家注册时长 | integer |
| WithdrawalKey | 注销账号查询密钥 | string |
错误信息
玩家信息不存在时。 ErrorCode : 30000 ErrorMessage : NotFoundAccountException
玩家信息在其他设备上使用中时 ErrorCode : 30006 ErrorMessage : DuplicatedDeviceException
玩家已申请注销时 ErrorCode : 30007 ErrorMessage : WithDrawalException