Skip to main content

Account Registration and Authentication

Use Facebook account for registration and authentication. Available for both iOS and Android.

Call Information

SocialSignIn(string facebookAccessToken, string accountType, PlayNANOODelegate callback) {}

Call Details

ParameterDescriptionType
facebookAccessTokenFacebook AccessTokenString
accountTypeAccount typeString
callbackCommunication ResultPlayNANOODelegate

Source Code

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) {
// 플레이나누 인증
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");
}
}
}

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 is being used on another device ErrorCode : 30006 ErrorMessage : DuplicatedDeviceException

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