Account Registration and Authentication
Sign up and authenticate using Facebook accounts. Available for both iOS and Android.
URL Confirmation
This API uses the service-account.playnanoo.com domain.
API Information
- URL:
https://service-account.playnanoo.com/api/v20240101/social/signin - Method:
PUT - Authentication Required: No
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| account_token | string | Required | Social login token (Facebook Access Token) |
| account_type | string | Required | Account type (PN_ACCOUNT_FACEBOOK = "FACEBOOK") |
Response Data
Res Structure
| Field | Type | Description |
|---|---|---|
| Token | FSerializeTokenData | Token information |
| Player | FSerializePlayerData | Player information |
FSerializeTokenData Structure
| Field | Type | Description |
|---|---|---|
| AccessToken | FString | Access token |
| RefreshToken | FString | Refresh token |
FSerializePlayerData Structure
| Field | Type | Description |
|---|---|---|
| UserUniqueID | FString | User unique ID |
| OpenID | FString | Open ID |
| Nickname | FString | Nickname |
| LinkedID | FString | Linked ID |
| LinkedType | FString | Linked type |
| PurchaseCount | int32 | Purchase count |
| PurchaseCurrencyCode | FString | Purchase currency code |
| PurchaseTotalPrice | double | Total purchase amount |
| PurchaseVoidedCount | int32 | Refund count |
| PurchaseVoidedCurrencyCode | FString | Refund currency code |
| PurchaseVoidedTotalPrice | double | Total refund amount |
| Country | FString | Country |
| Timezone | FString | Timezone |
| Offset | int32 | Time offset |
| JoinPeriod | int32 | Join period |
Unreal C++ Implementation
// FacebookSignInExample.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "FacebookSignInExample.generated.h"
UCLASS()
class YOURPROJECT_API AFacebookSignInExample : public AActor
{
GENERATED_BODY()
public:
AFacebookSignInExample();
UFUNCTION(BlueprintCallable, Category = "PlayNANOO|Account")
void FacebookSignIn();
private:
void OnFBInitComplete();
void OnFBHideUnity(bool bIsShow);
void FacebookAuthCallback(bool bWasSuccessful, const FString& AccessToken);
void SocialSignin(const FString& Token);
};
// FacebookSignInExample.cpp
#include "FacebookSignInExample.h"
#include "OnlineSubsystem.h"
#include "OnlineSubsystemFacebook.h"
#include "Interfaces/OnlineIdentityInterface.h"
#include "Interfaces/OnlineExternalUIInterface.h"
AFacebookSignInExample::AFacebookSignInExample()
{
PrimaryActorTick.bCanEverTick = false;
}
void AFacebookSignInExample::FacebookSignIn()
{
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(FACEBOOK_SUBSYSTEM);
if (OnlineSubsystem)
{
IOnlineIdentityPtr Identity = OnlineSubsystem->GetIdentityInterface();
if (Identity.IsValid())
{
FOnLoginCompleteDelegate LoginDelegate = FOnLoginCompleteDelegate::CreateLambda(
[this](int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error)
{
if (bWasSuccessful)
{
// Get Facebook Access Token
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(FACEBOOK_SUBSYSTEM);
if (OnlineSubsystem)
{
IOnlineIdentityPtr Identity = OnlineSubsystem->GetIdentityInterface();
if (Identity.IsValid())
{
FString AccessToken = Identity->GetAuthToken(LocalUserNum);
FacebookAuthCallback(true, AccessToken);
}
}
}
else
{
FacebookAuthCallback(false, FString());
UE_LOG(LogTemp, Error, TEXT("Facebook authentication failed: %s"), *Error);
}
}
);
Identity->AddOnLoginCompleteDelegate_Handle(0, LoginDelegate);
// Set requested permissions
FOnlineAccountCredentials Credentials;
Credentials.Type = TEXT("facebook");
Credentials.Id = TEXT("public_profile,email");
Identity->Login(0, Credentials);
}
}
}
void AFacebookSignInExample::FacebookAuthCallback(bool bWasSuccessful, const FString& AccessToken)
{
if (bWasSuccessful)
{
// Call SocialSignin API
SocialSignin(AccessToken);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Login Cancel"));
}
}
void AFacebookSignInExample::SocialSignin(const FString& Token)
{
// SocialSignIn(Token, TEXT("FACEBOOK"));
UE_LOG(LogTemp, Log, TEXT("Facebook Access Token: %s"), *Token);
}
Usage
1. Start Facebook Login
void UYourClass::StartFacebookSignIn()
{
AFacebookSignInExample* FacebookSignIn = GetWorld()->SpawnActor<AFacebookSignInExample>();
if (FacebookSignIn)
{
FacebookSignIn->FacebookSignIn();
}
}
2. Link Account with Token
Call the PlayNANOO API with the token received in the SocialSignin method after authentication:
New Login (SocialSignIn)
void UYourClass::SocialSignIn(const FString& Token, const FString& AccountType)
{
// First login with Facebook account
// AccountType: "FACEBOOK"
}
Reference
- Account Type Value:
PN_ACCOUNT_FACEBOOK = "FACEBOOK"- See Etc > Account Type Information for more details - Account Conversion: Refer to Guest > Account Conversion documentation
Online Subsystem Facebook
To use Unreal Engine's Online Subsystem Facebook, you must enable it in project settings and configure the Facebook App ID. Refer to the Unreal Engine official documentation for more details.