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_token | string | 必填 | 社交登录Token (Apple ID Token) |
| account_type | string | 必填 | 账号类型 (PN_ACCOUNT_APPLE_ID = "APPLE ID") |
响应数据
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++实现
// 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"
}
参考
- 账号类型值:
PN_ACCOUNT_APPLE_ID = "APPLE ID"- 详细信息请参阅 其他 > 账号类型信息 - 会员转换: 请参阅 游客关联 > 会员转换 文档
Online Subsystem Apple
要使用Unreal Engine的Online Subsystem Apple,需要在项目设置中激活并进行适当配置。详细内容请参阅Unreal Engine官方文档。