账号注册及认证
使用Facebook账号进行注册及认证。iOS和Android可统一使用。
URL确认
此API使用 service-account.playnanoo.com 域名。
API信息
- URL:
https://service-account.playnanoo.com/api/v20240101/social/signin - Method:
PUT - 需要认证: 否
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| account_token | string | 必填 | 社交登录Token (Facebook Access Token) |
| account_type | string | 必填 | 账号类型 (PN_ACCOUNT_FACEBOOK = "FACEBOOK") |
响应数据
Res结构体
| 字段 | 类型 | 说明 |
|---|---|---|
| Token | FSerializeTokenData | Token信息 |
| Player | FSerializePlayerData | 玩家信息 |
FSerializeTokenData 结构
| 字段 | 类型 | 说明 |
|---|---|---|
| AccessToken | FString | 访问Token |
| RefreshToken | FString | 刷新Token |
FSerializePlayerData 结构
| 字段 | 类型 | 说明 |
|---|---|---|
| UserUniqueID | FString | 用户唯一ID |
| OpenID | FString | Open ID |
| Nickname | FString | 昵称 |
| LinkedID | FString | 关联ID |
| LinkedType | FString | 关联类型 |
| PurchaseCount | int32 | 购买次数 |
| PurchaseCurrencyCode | FString | 购买货币代码 |
| PurchaseTotalPrice | double | 总购买金额 |
| PurchaseVoidedCount | int32 | 退款次数 |
| PurchaseVoidedCurrencyCode | FString | 退款货币代码 |
| PurchaseVoidedTotalPrice | double | 总退款金额 |
| Country | FString | 国家 |
| Timezone | FString | 时区 |
| Offset | int32 | 时间偏移 |
| JoinPeriod | int32 | 注册时长 |
Unreal C++实现
// 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)
{
// 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 인증 실패: %s"), *Error);
}
}
);
Identity->AddOnLoginCompleteDelegate_Handle(0, LoginDelegate);
// 요청할 권한 설정
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)
{
// 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);
}
使用方法
1. 开始Facebook登录
void UYourClass::StartFacebookSignIn()
{
AFacebookSignInExample* FacebookSignIn = GetWorld()->SpawnActor<AFacebookSignInExample>();
if (FacebookSignIn)
{
FacebookSignIn->FacebookSignIn();
}
}
2. 通过Token关联账号
认证完成后,使用SocialSignin方法中收到的token调用PlayNANOO API:
新登录(SocialSignIn)
void UYourClass::SocialSignIn(const FString& Token, const FString& AccountType)
{
// Facebook 계정으로 처음 로그인
// AccountType: "FACEBOOK"
}
参考
- 账号类型值:
PN_ACCOUNT_FACEBOOK = "FACEBOOK"- 详细信息请参阅 其他 > 账号类型信息 - 会员转换: 请参阅 游客关联 > 会员转换 文档
Online Subsystem Facebook
要使用Unreal Engine的Online Subsystem Facebook,需要在项目设置中激活并设置Facebook App ID。详细内容请参阅Unreal Engine官方文档。