跳到主要内容

管理会话

k-ID的Session包含当前玩家和位置的权限和年龄状态的集合。每个玩家都需要一个活动的Session。游戏应咨询活动的Session以确定游戏中的功能是启用还是禁用。

k-ID的Session不会自动过期。它设计为可以缓存到与玩家关联的本地存储或云存储中。对于儿童和青少年,会话可以更改,或者是父母使用家庭门户添加或删除权限,或者是玩家过生日并“升级”到建立会话的司法管辖区的新年龄类别。由于Session设计为缓存,因此每次游戏启动时都应使用/session/get API刷新,以获取所做的任何更改。

用会话ID在Unreal C++中获取会话
void UKidWorkflow::GetSessionPermissions(const FString& SessionId, const FString& ETag)
{
FString Url = FString::Printf(TEXT("%s/session/get?sessionId=%s&etag=%s"), *BaseUrl,
*SessionId, *ETag);

HttpRequestHelper::GetRequestWithAuth(Url, AuthToken,
[this](FHttpResponsePtr Response, bool bWasSuccessful)
{
if (bWasSuccessful && Response.IsValid())
{
if (Response->GetResponseCode() == 304)
{
UE_LOG(LogTemp, Log, TEXT("Session information is up-to-date."));
return;
}

TSharedRef<TJsonReader<>> Reader =
TJsonReaderFactory<>::Create(Response->GetContentAsString());
if (FJsonSerializer::Deserialize(Reader, SessionInfo))
{
// Save the member variable SessionInfo to local or cloud storage...
SaveSessionInfo();
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("/session/get failed"));
}
});
}

example session
{
"session": {
"ageStatus": "LEGAL_ADULT",
"dateOfBirth": "2005-04-15",
"etag": "6d9d24fccd428f845b355122799948dd0a52fc5d",
"jurisdiction": "US-CA",
"permissions": [
{
"enabled": true,
"managedBy": "PLAYER",
"name": "ai-generated-avatars"
},
{
"enabled": true,
"managedBy": "PLAYER",
"name": "text-chat-private"
}
],
"sessionId": "608616da-4fd2-4742-82bf-ec1d4ffd8187",
"status": "ACTIVE"
},
"status": "PASS"
}