Skip to main content

Token Authentication

Authenticates a player using the PlayNANOO authentication token.

Call Information

TokenSignIn(string accessToken, PlayNANOODelegate callback) {}

Call Details

ParameterDescriptionType
accessTokenPlayNANOO Access Tokenstring
callbackCommunication ResultPlayNANOODelegate

Source Code

using PlayNANOO;

public class PlayNANOOExample : MonoBehaviour
{
Plugin plugin;

void Start()
{
plugin = Plugin.GetInstance();

string accessToken = "string";
plugin.AccountManagerV20240401.TokenSignIn(accessToken, (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");
}
}
});
}
}

Response

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"
}
}

Response Details

Data KeyDescriptionType
Token.AccessTokenPlayer access tokenstring
Token.RefreshTokenPlayer refresh tokenstring
Player.UserUniqueIDPlayer unique IDstring
Player.OpenIDPlayer unique open IDstring
Player.NicknamePlayer nicknamestring
Player.LinkedIDPlayer linked IDstring
Player.LinkedTypePlayer link typestring
Player.PurchaseCountPlayer purchase countinteger
Player.PurchaseTotalPricePlayer cumulative purchase amountdouble
Player.PurchaseCurrencyCodePlayer purchase currencystring
Player.PurchaseVoidedCountPlayer refund countinteger
Player.PurchaseVoidedTotalPricePlayer cumulative refund amountdouble
Player.PurchaseVoidedCurrencyCodePlayer refund currencystring
Player.CountryPlayer country codestring
Player.TimezonePlayer country timezonestring
Player.OffsetPlayer timezone offset (based on UTC)integer
Player.JoinPeriodPlayer membership durationinteger
WithdrawalKeyWithdrawal account lookup keystring

Error Information

If player information does not exist. ErrorCode : 30000 ErrorMessage : NotFoundAccountException

If player information does not match ErrorCode : 30001 ErrorMessage : NotMatchAccountException

If the token has expired ErrorCode : 30002 ErrorMessage : ExpiredTokenException

If the token does not exist ErrorCode : 30005 Message : NullTokenException

If player information is being used on another device ErrorCode : 30006 ErrorMessage : DuplicatedDeviceException

If the player has requested withdrawal ErrorCode : 30007 ErrorMessage : WithDrawalException