跳转到主要内容

iOS注册及认证

使用Apple ID进行注册及认证。

URL确认

此API使用 service-account.playnanoo.com 域名。

注册Apple认证插件

使用Unreal Engine的Online Subsystem Apple或第三方插件。

API信息

  • URL: https://service-account.playnanoo.com/api/v20240101/social/signin
  • Method: PUT
  • 需要认证: 否

请求参数

参数类型必填说明
account_tokenstring必填社交登录Token (Apple ID Token)
account_typestring必填账号类型 (PN_ACCOUNT_APPLE_ID = "APPLE ID")

响应数据

Res结构体

字段类型说明
TokenFSerializeTokenDataToken信息
PlayerFSerializePlayerData玩家信息

FSerializeTokenData 结构

字段类型说明
AccessTokenFString访问Token
RefreshTokenFString刷新Token

FSerializePlayerData 结构

字段类型说明
UserUniqueIDFString用户唯一ID
OpenIDFStringOpen ID
NicknameFString昵称
LinkedIDFString关联ID
LinkedTypeFString关联类型
PurchaseCountint32购买次数
PurchaseCurrencyCodeFString购买货币代码
PurchaseTotalPricedouble总购买金额
PurchaseVoidedCountint32退款次数
PurchaseVoidedCurrencyCodeFString退款货币代码
PurchaseVoidedTotalPricedouble总退款金额
CountryFString国家
TimezoneFString时区
Offsetint32时间偏移
JoinPeriodint32注册时长

Unreal C++实现

// AppleSignInExample.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AppleSignInExample.generated.h"

UCLASS()
class YOURPROJECT_API AAppleSignInExample : public AActor
{
GENERATED_BODY()

public:
AAppleSignInExample();

UFUNCTION(BlueprintCallable, Category = "PlayNANOO|Account")
void SignIn();

private:
void OnAppleSignInComplete(const FString& IdToken);
void SocialSignin(const FString& Token);
};

// AppleSignInExample.cpp
#include "AppleSignInExample.h"
#include "OnlineSubsystem.h"
#include "OnlineSubsystemApple.h"
#include "Interfaces/OnlineIdentityInterface.h"

AAppleSignInExample::AAppleSignInExample()
{
PrimaryActorTick.bCanEverTick = false;
}

void AAppleSignInExample::SignIn()
{
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(APPLE_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)
{
// Apple ID Token 획득
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(APPLE_SUBSYSTEM);
if (OnlineSubsystem)
{
IOnlineIdentityPtr Identity = OnlineSubsystem->GetIdentityInterface();
if (Identity.IsValid())
{
FString IdToken = Identity->GetAuthToken(LocalUserNum);
OnAppleSignInComplete(IdToken);
}
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("Apple 인증 실패: %s"), *Error);
}
}
);

Identity->AddOnLoginCompleteDelegate_Handle(0, LoginDelegate);
Identity->Login(0, FOnlineAccountCredentials());
}
}
}

void AAppleSignInExample::OnAppleSignInComplete(const FString& IdToken)
{
// SocialSignin API 호출
SocialSignin(IdToken);
}

void AAppleSignInExample::SocialSignin(const FString& Token)
{
// SocialSignIn(Token, TEXT("APPLE ID"));
UE_LOG(LogTemp, Log, TEXT("Apple ID Token: %s"), *Token);
}

使用方法

1. 开始Apple登录

void UYourClass::StartAppleSignIn()
{
AAppleSignInExample* AppleSignIn = GetWorld()->SpawnActor<AAppleSignInExample>();
if (AppleSignIn)
{
AppleSignIn->SignIn();
}
}

2. 通过Token关联账号

认证完成后,使用SocialSignin方法中收到的token调用PlayNANOO API:

新登录(SocialSignIn)

void UYourClass::SocialSignIn(const FString& Token, const FString& AccountType)
{
// Apple 계정으로 처음 로그인
// AccountType: "APPLE ID"
}
参考
Online Subsystem Apple

要使用Unreal Engine的Online Subsystem Apple,需要在项目设置中激活并进行适当配置。详细内容请参阅Unreal Engine官方文档。