Code-Link
Provide a Code Link sign-in option to enable account linking by sharing unique codes between devices.
読み終わるまでの所要時間 2 分最終更新 1ヶ月前
最小 SDK バージョン: 3.0.0
Code-Link を使用してゲーム内でのプレイヤーの認証を設定する以下のシナリオについて説明します。- Code-Link を設定する。
- Code-Link を使用してサインインする。
Code-Link の設定
- Unity Authentication について、ID プロバイダーを Code-Link に設定します。
- Unity エディターメニューで、Edit (編集) > Project Settings... (プロジェクト設定...) に移動し、Services (サービス) > Authentication を選択します。
- ID Providers (ID プロバイダー) を Code-Link に設定し、Add (追加) を選択します。
- Save (保存) を選択します。
Code-Link を使用したサインイン
以下の Code-Link の機能を使用して、プレイヤーとしてサインインします。- プレイヤーは、匿名で、またはサポートされている ID プロバイダーのいずれかを使用して、デバイス A にサインインします。
- プレイヤーは (サインインしていない) デバイス B でも同じアカウントを使用することに決め、サインインコードの生成をデバイス B に要求します。
- サインインコードを受け取ったら、プレイヤーはそのコードをデバイス A に入力して、コードが承認されることを確認します。
- プレイヤーはデバイス B に戻り、コードによるサインインをリクエストします。
- デバイス B が、デバイス A と同じアカウントで認証されます。




-
認証と サインインコード の生成を行いたい未認証のデバイスから、メソッドを使用します (識別子を渡すことは任意ですが、サインインコードを生成したデバイスを識別するために推奨されます)。
GenerateSignInCodeAsync -
生成されたサインインコードと有効期限をプレイヤーに表示します。
- すでに認証済みの 2 つめのデバイスで、サインインコードを入力するためのアクセスをプレイヤーに許可します。
-
(任意) を使用して、プレイヤーから提供されたサインインコードによってサインインコードの情報を取得し、プレイヤーに表示します。これにより、プレイヤーは両方のデバイスで識別子を比較して、正しいデバイスを認証しようとしていることを確認できます。
GetSignInCodeInfoAsync -
を使用して、Code-Link によるサインインを承認します。
ConfirmCodeAsyncasync Task GetCodeInfoAsync(string signInCode){ try { var codeInfo = await AuthenticationService.Instance.GetSignInCodeInfoAsync(signInCode); // Display code, and expiration and identifier to the player and ask them to authorize the code-link sign in } catch (Exception e) { // Notify the client something went wrong getting the code information }}async Task ConfirmCodeAsync(string signInCode){try{await AuthenticationService.Instance.ConfirmCodeAsync(signInCode);// Display a confirmation that the device should be authorized}catch (Exception e){// Notify the client something went wrong with the code confirmation}} -
を呼び出して、サインインコードを生成したのと同じデバイスでプレイヤーをサインインします (Code-Link によるサインインを認証するための認証情報はメモリに格納されているため、SignInWithCodeAsync を呼び出す前に必ず GenerateSignInCodeAsync を呼び出してください。これを行わない場合、例外がスローされます)。コードがまだ承認されていない場合、このメソッドは成功しますが、プレイヤーはサインインされません。サインインが成功したかどうかを確認するには、SignedIn イベントを探します。
SignInWithCodeAsyncpublic async Task SignInWithCodeAsync(){ try { AuthenticationService.Instance.SignedIn += UserHasSignedIn await AuthenticationService.Instance.SignInWithCodeAsync(); } catch (Exception e) { // Notify the client something went wrong signing in the player } finally { AuthenticationService.Instance.SignedIn -= UserHasSignedIn }}public void UserHasSignedIn() { // Notify the client the user signed in successfully.}
<Note>**ノート**: `SignInWithCodeAsync` メソッドでも自動ポーリング (5 秒ごと) を実行できるため、コードが承認されるとデバイスでプレイヤーが自動的にサインインされ、コードが期限切れになると例外がスローされます。また、このメソッドはポーリングをキャンセルするための `CancellationToken` を受け入れます。```csCancellationTokenSource CodeLinkCancellationTokenSource;</Note>public async Task PollSignInWithCodeAsync()\{ try \{ CodeLinkCancellationTokenSource = new CancellationTokenSource(); await AuthenticationService.SignInWithCodeAsync(true, CodeLinkCancellationTokenSource.Token); } catch (Exception e) \{ // Notify the client something went wrong with Polling for Code Confirmation }}public void CancelSignInWithCode()\{ CodeLinkCancellationTokenSource.Cancel();}