GS2-Auth
GS2-SDK for Game Engine のリファレンス
ゲームエンジン向けSDK
モデル
EzAccessToken
型 | 説明 | |
---|---|---|
token | string | アクセストークン |
userId | string | ユーザーID |
expire | long | 有効期限 |
メソッド
login
login
///////////////////////////////////////////////////////////////
// New Experience (Enabled UniTask)
///////////////////////////////////////////////////////////////
using Gs2.Unity.Util;
#if GS2_ENABLE_UNITASK
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
#endif
var profile = new Profile(
clientId: "your client id",
clientSecret: "your client secret",
reopener: new Gs2BasicReopener()
);
await profile.InitializeAsync();
var gs2 = new Gs2.Unity.Core.Gs2Domain(profile);
// Up to this line is the initialization process.
{
var domain = gs2.Auth.AccessToken(
);
var result = await domain.LoginAsync(
keyId: "key-0001",
body: "body",
signature: "signature"
);
var token = result.Token;
var userId = result.UserId;
var expire = result.Expire;
}
///////////////////////////////////////////////////////////////
// New Experience
///////////////////////////////////////////////////////////////
using Gs2.Unity.Util;
var profile = new Profile(
clientId: "your client id",
clientSecret: "your client secret",
reopener: new Gs2BasicReopener()
);
var future = profile.Initialize();
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var gs2 = new Gs2.Unity.Core.Gs2Domain(profile);
// Up to this line is the initialization process.
{
var domain = gs2.Auth.AccessToken(
);
var future = domain.Login(
keyId: "key-0001",
body: "body",
signature: "signature"
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var token = future.Result.Token;
var userId = future.Result.UserId;
var expire = future.Result.Expire;
}
///////////////////////////////////////////////////////////////
// Legacy Experience
///////////////////////////////////////////////////////////////
using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;
var profile = new Profile(
clientId: "your client id",
clientSecret: "your client secret",
reopener: new Gs2BasicReopener()
);
{
AsyncResult<object> asyncResult = null;
var current = profile.Initialize(
r => { asyncResult = r; }
);
yield return current;
if (asyncResult.Error != null)
{
OnError(asyncResult.Error);
yield break;
}
}
var gs2 = new Gs2.Unity.Client(profile);
// Up to this line is the initialization process.
{
AsyncResult<EzLoginResult> asyncResult = null;
var current = gs2.Auth.Login(
callback: r => { asyncResult = r; },
keyId: "key-0001",
body: "body",
signature: "signature"
);
yield return current;
if (asyncResult.Error != null)
{
OnError(asyncResult.Error);
yield break;
}
var result = asyncResult.Result;
var token = result.Token;
var userId = result.UserId;
var expire = result.Expire;
}
const auto Profile = MakeShared<Gs2::UE5::Util::FProfile>(
"your client id",
"your client secret",
Gs2::Core::Model::ERegion::ApNorthEast1,
MakeShareable<Gs2::UE5::Util::IReOpener>(new Gs2::UE5::Util::FGs2BasicReOpener())
);
Gs2::UE5::Core::Domain::FGs2DomainPtr Gs2;
{
const auto Future = Profile->Initialize();
Future->StartSynchronousTask();
if (!TestFalse(WHAT, Future->GetTask().IsError())) return false;
Gs2 = Future->GetTask().Result();
Future->EnsureCompletion();
}
// Up to this line is the initialization process.
{
const auto Domain = Gs2->Auth->AccessToken(
);
const auto Future = Domain->Login(
"key-0001",
"body",
"signature"
);
Future->StartSynchronousTask();
if (!TestFalse(WHAT, Future->GetTask().IsError())) return false;
const auto Token = Result->Token;
const auto UserId = Result->UserId;
const auto Expire = Result->Expire;
}
ProfilePtr = std::make_shared<gs2::ez::Profile>(
TCHAR_TO_ANSI(*ClientId),
TCHAR_TO_ANSI(*ClientSecret),
gs2::ez::Gs2BasicReopener()
);
ClientPtr = std::make_shared<gs2::ez::Client>(
*ProfilePtr
);
ProfilePtr->initialize(
[this](gs2::ez::Profile::AsyncInitializeResult r)
{
if (r.getError())
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
}
else
{
AccountCreate();
}
}
);
// Up to this line is the initialization process.
ClientPtr->auth.loginBySignature(
[](gs2::ez::account::AsyncEzLoginBySignatureResult r)
{
if (r.getError())
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "auth.loginBySignature failed.");
}
else
{
Token = r.getResult()->getToken();
UserId = r.getResult()->getUserId();
Expire = r.getResult()->getExpire();
}
},
TCHAR_TO_ANSI("key-0001"), // keyId
TCHAR_TO_ANSI("body"), // body
TCHAR_TO_ANSI("signature") // signature
);
指定したユーザIDでGS2にログイン
body と signature には GS2-Account::Authentication の結果を指定します。
body と signature の検証に成功すると、 アクセストークン
を応答します。
アクセストークン
は有効期限が1時間の一時的な認証情報で、GS2内の各サービスでゲームプレイヤーを識別するために使用されます。
なおUnityとCocos2d-x向けにGS2-Account::AuthenticationとこのAPIをひとまとめにしたGS2-Profile::Loginを用意しています。
GS2-Profile::Loginははじめかた⇒サンプルプログラムで解説しています。
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
keyId | string | ✓ | ~ 1024文字 | 暗号鍵GRN | |
body | string | ✓ | ~ 1048576文字 | アカウント認証情報の署名対象 | |
signature | string | ✓ | ~ 1024文字 | 署名 |
Result
型 | 説明 | |
---|---|---|
token | string | アクセストークン |
userId | string | ユーザーID |
expire | long | 有効期限 |