認証
この説明では、SDKのメソッドを使用して実装する方法を示します:
- ユーザー登録
- 登録確認メールの再送依頼
- ユーザーログイン
- ユーザーパスワードリセット
ユーザーの認証は、ユーザー名またはメールアドレスで行うことができます。以下の例では、ユーザー名でユーザーを認証し、メールアドレスは登録の確認やパスワードのリセットに使用します。
例題の論理とインターフェースは、お客様のアプリケーションでの使用よりも複雑ではありません。認証システムの実装方法は、デモプロジェクトで紹介されています。
ユーザー登録を実装する
このチュートリアルでは、以下のロジックの実装について説明します:
ページのインターフェースを作成する
登録ページのシーンを作り、そこに以下の要素を追加します:
- ユーザー名欄
- ユーザーEメールアドレス欄
- ユーザーパスワード欄
- 登録ボタン
次の図は、ページ構成の例です。
ページコントローラーを作成する
- MonoBehaviour基底クラスを継承したスクリプト
RegistrationPage
を作成します。 - ページインターフェース要素の変数を宣言し、
Inspector パネルでその値を設定します。 - 登録をクリックする処理にロジックを追加します:
Start
メソッドで、クリックイベントを購読します。- ボタンをクリックした後に呼び出される匿名メソッドを追加します。
- このメソッドで、
username
、email
、password
の各変数を宣言し、ページ上のフィールドの値で初期化します。 XsollaLogin.Instance.Registration
SDKメソッドを呼び出して、username
、email
、およびpassword
の各変数、ページ上のフィールドの値を渡します:
OnSuccess
— 登録が成功した場合に呼び出されるOnError
— エラーが発生した場合に呼び出される
スクリプトの例では、OnSuccess
とOnError
メソッドは標準のDebug.Logメソッドを呼び出します。エラーコードと説明は、error
パラメータに渡されます。
登録メールの再送リクエストのページを開いたり、登録が成功した場合にログインページを開くなど、他のアクションを追加することができます。
登録ページのスクリプトの例:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class RegistrationPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private InputField EmailInputField;
[SerializeField] private InputField PasswordInputField;
[SerializeField] private Button RegisterButton;
private void Start()
{
// Handling the button click
RegisterButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
var email = EmailInputField.text;
var password = PasswordInputField.text;
XsollaLogin.Instance.Registration(username, email, password, onSuccess: OnSuccess, onError: OnError);
});
}
private void OnSuccess()
{
UnityEngine.Debug.Log("Registration successful");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Registration failed. Description: {error.errorMessage}");
// Some actions
}
}
}
登録の確認メールを設定する
登録に成功すると、ユーザーは指定したアドレスに登録確認メールを受け取ります。パブリッシャーアカウントで、ユーザーに送られるメールはカスタマイズできます。
Androidアプリケーションを開発している場合、ユーザーが登録を確認した後、アプリケーションに戻るためのディープリンクをセットアップします。
登録確認メールの再送依頼を実装する
このチュートリアルでは、以下のロジックの実装について説明します:
ページのインターフェースを作成する
確認メールの再送信依頼があるページのシーンを作り、そこに以下の要素を追加します:
- ユーザー名/メールアドレス欄
- メール再送信ボタン
次の図は、ページ構成の一例です。
ページコントローラーを作成する
- MonoBehaviour基底クラスを継承したスクリプト
ResendConfirmationEmail
を作成します。 - ページインターフェース要素の変数を宣言し、
Inspector パネルでその値を設定します。 - メール再送信ボタンをクリックする処理にロジックを追加します:
Start
メソッドで、クリックイベントを購読します。- ボタンをクリックした後に呼び出される匿名メソッドを追加します。
- このメソッドでは、
username
変数を宣言し、ページ上のフィールドの値で初期化します。 XsollaLogin.Instance.ResendEmail
のSDKメソッドを呼び出し、username
変数とOnSuccess
およびOnError
メソッドを渡します。
メール再送ページのスクリプト例:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class ResendConfirmationEmail : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private Button ResendEmailButton;
private void Start()
{
// Handling the button click
ResendEmailButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
XsollaLogin.Instance.ResendConfirmationLink(username, onSuccess: OnSuccess, onError: OnError);
});
}
private void OnSuccess()
{
UnityEngine.Debug.Log("Resend confirmation email successful");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Resend confirmation email failed. Description: {error.errorMessage}");
// Some actions
}
}
}
リクエストが成功した場合、ユーザーは登録時に指定したメールアドレスに登録確認メールを受け取ります。
ユーザーログインを実装する
このチュートリアルでは、以下のロジックの実装について説明します:
ページのインターフェースを作成する
ログインページのシーンを作成し、そこに以下の要素を追加します:
- ユーザー名欄
- パスワード欄
- ログイン状態を保存するチェックボックス
- ログインボタン
次の図は、ページ構成の一例です。
ページコントローラーを作成する
- MonoBehaviour基底クラスを継承したスクリプト
AutorizationPage
を作成します。 - ページインターフェース要素の変数を宣言し、
Inspector パネルでその値を設定します。 - ログインボタンをクリックする処理にロジックを追加します:
Start
メソッドで、クリックイベントを購読します。- ボタンをクリックした後に呼び出される匿名メソッドを追加します。
- このメソッドでは、
username
>とpassword
という変数を宣言し、ページ上のフィールドの値で初期化します。rememberMe
変数を作成し、アカウントを記憶するためのチェックボックスの状態で初期化します。 XsollaLogin.Instance.SignIn
のSDKメソッドを呼び出し、username
、password
とrememberMe
の各変数およびOnSuccess
、OnError
の各メソッドを渡します。
token
パラメータに渡されます。認証トークンは、エクソラサーバへのリクエストで使用されます。ログインページのスクリプトの例:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class AuthorizationPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private InputField PasswordInputField;
[SerializeField] private Toggle RememberMeToggle;
[SerializeField] private Button AuthorizationButton;
private void Start()
{
// Handling the button click
AuthorizationButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
var password = PasswordInputField.text;
var rememberMe = RememberMeToggle.isOn;
XsollaLogin.Instance.SignIn(username, password, rememberMe, null, onSuccess: OnSuccess, onError: OnError);
});
}
private void OnSuccess(string token)
{
UnityEngine.Debug.Log($"Authorization successful. Token: {token}");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Authorization failed. Description: {error.errorMessage}");
// Some actions
}
}
}
パスワードリセットを実装する
このチュートリアルでは、以下のロジックの実装について説明します:
ページのインターフェースを作成する
パスワードリセットページのシーンを作成し、以下の要素をページに追加します:
- ユーザー名/メールアドレス欄
- パスワードリセットボタン
次の図は、ページ構成の一例です。
ページコントローラーを作成する
- MonoBehaviour基底クラスを継承したスクリプト
ResetPasswordPage
を作成します。 - ページインターフェース要素の変数を宣言し、
Inspector パネルでその値を設定します。 - パスワードリセットボタンをクリックする処理にロジックを追加します:
Start
メソッドで、クリックイベントを購読します。- ボタンがクリックされた後に呼び出される匿名メソッドを追加します。
- このメソッドでは、
username
変数を宣言し、ページ上のフィールドの値で初期化します。 XsollaLogin.Instance.ResetPassword
のSDKメソッドを呼び出し、username
変数とOnSuccess
およびOnError
メソッドを渡します。
パスワードリセットページのスクリプトの例:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class ResetPasswordPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private Button ResetPasswordButton;
private void Start()
{
// Handling the button click
ResetPasswordButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
XsollaLogin.Instance.ResetPassword(username, OnSuccess, OnError);
});
}
private void OnSuccess()
{
UnityEngine.Debug.Log("Password reset successful");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Password reset failed. Description: {error.errorMessage}");
// Some actions
}
}
}
パスワード再設定のリクエストに成功すると、ユーザーにパスワード再設定用のリンクが記載されたメールが送信されます。パブリッシャーアカウント>ログインプロジェクト>一般設定> URL>コールバックURLで、認証に成功した後、電子メールによる確認、またはパスワードのリセット後に、ユーザーがリダイレクトされるURLアドレスまたはパスを設定することができます。
このガイドでは、SDKメソッドを使用して、ユーザーのサインアップとソーシャルネットワークアカウントによるログインを実装する方法を紹介します。
ユーザー名/ユーザーのメールアドレスとパスワードによるユーザー認証とは異なり、ユーザーのサインアップのために別のロジックを実装する必要はありません。ユーザーの初回ログインがソーシャルネットワーク経由の場合、新しいアカウントが自動的に作成されます。
別の認証方法としてアプリケーションにソーシャルログインを実装している場合、以下の条件を満たすと、ソーシャルネットワークアカウントは既存のユーザーアカウントに自動的にリンクします。
- ユーザー名/メールアドレスとパスワードでサインアップしたユーザーが、ソーシャルネットワークアカウントを介してアプリケーションにログインしました。
- ソーシャルネットワークでは、メールアドレスを返します。
- ソーシャルネットワークでのユーザーのメールアドレスは、アプリケーションで登録に使用したメールアドレスと同じです。
LinkSocialProvider
SDKメソッドを使用します。このチュートリアルでは、以下のロジックの実装について説明します:
この例では、Twitterアカウントによるユーザーログインを設定しています。すべてのソーシャルネットワークを同じ方法で設定できます。
例題の論理とインターフェースは、お客様のアプリケーションでの使用よりも複雑ではありません。認証システムの実装方法は、デモプロジェクトで紹介されています。
ページのインターフェースを作成する
ログインページのシーンを作成し、そこにソーシャルログインボタンを追加します。次の図は、ページ構成の例です。
ページコントローラーを作成する
- MonoBehaviour基底クラスを継承した
SocialAuthorizationPage
スクリプトを作成します。 - アプリケーションのログインページインターフェース要素の変数を宣言し、
Inspector パネルでその値を設定します。 - ログインボタンをクリックする処理にロジックを追加します:
Start
メソッドで、クリックイベントを購読します。- ボタンをクリックした後に呼び出される匿名メソッドを追加します。
- ログインページのURLを渡すには、匿名メソッドで
url
変数を宣言します。SocialProvider
パラメータにFacebook
の値を渡して、GetSocialNetworkAuthUrl
SDKメソッドでこの変数を初期化します。 - ブラウザを開くには、
BrowserHelper.Instance.Open
メソッドを呼び出します。ビルドインのブラウザーを使用するには、url
変数とtrue
値をメソッドに渡します。
- トークンを取得してブラウザを閉じるために、ユーザー登録が成功した後のページURLの変化を追跡します:
singlePageBrowser
変数を宣言し、BrowserHelper.Instance.GetLastBrowser
SDKメソッドで初期化します。- アクティブページのURL変更イベントを受信し、ハンドラとして
OnUrlChanged
メソッドを設定します。
- トークンを取得してブラウザを閉じるために、ユーザー登録が成功した後のページURLの変化を追跡します:
- トークンの取得を実装します:
OnUrlChanged
メソッドで渡されたアクティブページのURLを解析するために、ParseUtils.TryGetValueFromUrl
ユーティリティーメソッドを使用します。- アクティブページのURLに認証コードが含まれているかどうかをチェックする機能を追加します。
ParseUtils.TryGetValueFromUrl
メソッドは、code
変数で認証コードを渡します。 - 認証コードをトークンと交換するには、
ExchangeCodeToToken
SDKメソッドを呼び出し、code
変数と以下のメソッドを渡します:OnSuccess
— 登録が成功した場合に呼び出されるOnError
— エラーが発生した場合に呼び出される
スクリプトの例では、OnSuccess
とOnError
メソッドは標準のDebug.Logメソッドを呼び出します。他のアクションを追加することができます。
ユーザーがログインに成功すると、認証トークンがtoken
パラメータで渡されます。このトークンは、エクソラサーバへのリクエストで使用されます。エラーが発生した場合は、そのコードと説明がerror
パラメータに渡されます。
- トークンを取得したら、ブラウザでゲームオブジェクトを削除します。
ログインページのスクリプトの例:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class SocialAuthorizationPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private Button FacebookButton;
private void Start()
{
// Handling the button click
FacebookButton.onClick.AddListener(() =>
{
// Opening browser
var url = XsollaLogin.Instance.GetSocialNetworkAuthUrl(SocialProvider.Facebook);
BrowserHelper.Instance.Open(url, true);
// Determining the end of authentication
BrowserHelper.Instance.InAppBrowser.AddUrlChangeHandler(OnUrlChanged);
});
}
// Getting token
private void OnUrlChanged(string url)
{
if (ParseUtils.TryGetValueFromUrl(url, ParseParameter.code, out var code))
{
XsollaLogin.Instance.ExchangeCodeToToken(code, OnSuccess, OnError);
Destroy(BrowserHelper.Instance.gameObject);
}
}
private void OnSuccess(string token)
{
UnityEngine.Debug.Log($"Authorization successful. Token: {token}");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Authorization failed. Description: {error.errorMessage}");
// Some actions
}
}
}
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。