認証

以下のステップバイステップのチュートリアルに従って、SDKの基本的な機能を使ってみましょう。

ユーザー名/メールとパスワードによるユーザーログイン

この説明では、SDKのメソッドを使用して実装する方法を示します:

  • ユーザー登録
  • 登録確認メールの再送依頼
  • ユーザーログイン
  • ユーザーパスワードリセット

ユーザーの認証は、ユーザー名またはメールアドレスで行うことができます。以下の例では、ユーザー名でユーザーを認証し、メールアドレスは登録の確認やパスワードのリセットに使用します。

Note
ログインウィジェットをサイト(ウェブストアなど)で使用する場合は、サイトとアプリケーションで同じユーザー認証方法を実装していることを確認してください。デフォルトでは、ウィジェットは認証に電子メールアドレスを使用します。ユーザー名によるユーザーログインを設定するには、アカウントマネージャーにお問い合わせください。

例題の論理とインターフェースは、お客様のアプリケーションでの使用よりも複雑ではありません。認証システムの実装方法は、デモプロジェクトで紹介されています。

ユーザー登録を実装する

ページのインターフェースを作成する

登録ページのシーンを作り、そこに以下の要素を追加します:

  • ユーザー名欄
  • ユーザーEメールアドレス欄
  • ユーザーパスワード欄
  • 登録ボタン

次の図は、ページ構成の例です。

ページコントローラーを作成する

  1. MonoBehaviour基底クラスを継承したスクリプトRegistrationPageを作成します。
  2. ページインターフェース要素の変数を宣言し、Inspectorパネルでその値を設定します。
  3. 登録をクリックする処理にロジックを追加します:

    1. Startメソッドで、クリックイベントを購読します。
    2. ボタンをクリックした後に呼び出される匿名メソッドを追加します。
    3. このメソッドで、usernameemailpasswordの各変数を宣言し、ページ上のフィールドの値で初期化します。
    4. XsollaLogin.Instance.Registration SDKメソッドを呼び出して、usernameemail、およびpasswordの各変数、ページ上のフィールドの値を渡します:

      • OnSuccess — 登録が成功した場合に呼び出される
      • OnError — エラーが発生した場合に呼び出される

Note

スクリプトの例では、OnSuccessOnErrorメソッドは標準のDebug.Logメソッドを呼び出します。エラーコードと説明は、errorパラメータに渡されます。

登録メールの再送リクエストのページを開いたり、登録が成功した場合にログインページを開くなど、他のアクションを追加することができます。

登録ページのスクリプトの例:

Copy
Full screen
Small screen
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, 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アプリケーションを開発している場合、ユーザーが登録を確認した後、アプリケーションに戻るためのディープリンクをセットアップします。

Note
お客様のセキュリティ基準で許可されている場合は、電子メールアドレスによる登録確認を無効にすることができます。無効にするには、アカウントマネージャーに連絡するか、am@xsolla.comまでご連絡ください。

登録確認メールの再送依頼を実装する

ページのインターフェースを作成する

確認メールの再送信依頼があるページのシーンを作り、そこに以下の要素を追加します:

  • ユーザー名/メールアドレス欄
  • 再送信ボタン

次の図は、ページ構成の一例です。

ページコントローラーを作成する

  1. MonoBehaviour基底クラスを継承したスクリプトResendConfirmationEmailを作成します。
  2. ページインターフェース要素の変数を宣言し、Inspectorパネルでその値を設定します。
  3. メール再送信をクリックする処理にロジックを追加します:

    1. Startメソッドで、クリックイベントを購読します。
    2. ボタンをクリックした後に呼び出される匿名メソッドを追加します。
    3. このメソッドでは、username変数を宣言し、ページ上のフィールドの値で初期化します。
    4. XsollaLogin.Instance.ResendEmailのSDKメソッドを呼び出し、username変数とOnSuccessおよびOnErrorメソッドを渡します。

メール再送ページのスクリプト例:

Copy
Full screen
Small screen
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.ResendEmail(username, OnSuccess, 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
    }
  }
}

リクエストが成功した場合、ユーザーは登録時に指定したメールアドレスに登録確認メールを受け取ります。

ユーザーログインを実装する

ページのインターフェースを作成する

ログインページのシーンを作成し、そこに以下の要素を追加します:

  • ユーザー名欄
  • パスワード欄
  • ログイン状態を保存するチェックボックス
  • ログインボタン

次の図は、ページ構成の一例です。

ページコントローラーを作成する

  1. MonoBehaviour基底クラスを継承したスクリプトAutorizationPageを作成します。
  2. ページインターフェース要素の変数を宣言し、Inspectorパネルでその値を設定します。
  3. ログインボタンをクリックする処理にロジックを追加します:

    1. Startメソッドで、クリックイベントを購読します。
    2. ボタンをクリックした後に呼び出される匿名メソッドを追加します。
    3. このメソッドでは、username>とpasswordという変数を宣言し、ページ上のフィールドの値で初期化します。rememberMe変数を作成し、アカウントを記憶するためのチェックボックスの状態で初期化します。
    4. XsollaLogin.Instance.SignInのSDKメソッドを呼び出し、usernamepasswordrememberMeの各変数およびOnSuccessOnErrorの各メソッドを渡します。

Note
ユーザーのログインが成功すると、認証トークンがtokenパラメータに渡されます。認証トークンは、エクソラサーバへのリクエストで使用されます。

ログインページのスクリプトの例:

Copy
Full screen
Small screen
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, OnSuccess, 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
    }
  }
}

パスワードリセットを実装する

ページのインターフェースを作成する

パスワードリセットページのシーンを作成し、以下の要素をページに追加します:

  • ユーザー名/メールアドレス欄
  • パスワードリセットボタン

次の図は、ページ構成の一例です。

ページコントローラーを作成する

  1. MonoBehaviour基底クラスを継承したスクリプトResetPasswordPageを作成します。
  2. ページインターフェース要素の変数を宣言し、Inspectorパネルでその値を設定します。
  3. パスワードリセットボタンをクリックする処理にロジックを追加します:

    1. Startメソッドで、クリックイベントを購読します。
    2. ボタンがクリックされた後に呼び出される匿名メソッドを追加します。
    3. このメソッドでは、username変数を宣言し、ページ上のフィールドの値で初期化します。
    4. XsollaLogin.Instance.ResetPasswordのSDKメソッドを呼び出し、username変数とOnSuccessおよびOnErrorメソッドを渡します。

パスワードリセットページのスクリプトの例:

Copy
Full screen
Small screen
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で設定できます。

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

ソーシャルログイン

このガイドでは、SDKメソッドを使用して、ユーザーのサインアップとソーシャルネットワークアカウントによるログインを実装する方法を紹介します。

ユーザー名/ユーザーのメールアドレスとパスワードによるユーザー認証とは異なり、ユーザーのサインアップのために別のロジックを実装する必要はありません。ユーザーの初回ログインがソーシャルネットワーク経由の場合、新しいアカウントが自動的に作成されます。

別の認証方法としてアプリケーションにソーシャルログインを実装している場合、以下の条件を満たすと、ソーシャルネットワークアカウントは既存のユーザーアカウントに自動的にリンクします。

  • ユーザー名/メールアドレスとパスワードでサインアップしたユーザーが、ソーシャルネットワークアカウントを介してアプリケーションにログインしました。
  • ソーシャルネットワークでは、メールアドレスを返します。
  • ソーシャルネットワークでのユーザーのメールアドレスは、アプリケーションで登録に使用したメールアドレスと同じです。

Note
ソーシャルネットワークアカウントの手動リンクを実装できます。ユーザーがソーシャルネットワークアカウントを自分のアカウントにリンクできるページを、アプリケーションに追加します。ページコントローラで、LinkSocialProvider SDKメソッドを使用します。

この例では、Facebookアカウントによるユーザーログインを設定しています。すべてのソーシャルネットワークを同じ方法で設定できます。

例題の論理とインターフェースは、お客様のアプリケーションでの使用よりも複雑ではありません。認証システムの実装方法は、デモプロジェクトで紹介されています。

ページのインターフェースを作成する

ログインページのシーンを作成し、そこにソーシャルログインボタンを追加します。次の図は、ページ構成の例です。

ページコントローラーを作成する

  1. MonoBehaviour基底クラスを継承したSocialAuthorizationPageスクリプトを作成します。
  2. アプリケーションのログインページインターフェース要素の変数を宣言し、Inspectorパネルでその値を設定します。
  3. ログインボタンをクリックする処理にロジックを追加します:

    1. Startメソッドで、クリックイベントを購読します。
    2. ボタンをクリックした後に呼び出される匿名メソッドを追加します。
    3. ログインページのURLを渡すには、匿名メソッドでurl変数を宣言します。SocialProviderパラメータにFacebookの値を渡して、GetSocialNetworkAuthUrl SDKメソッドでこの変数を初期化します。
    4. ブラウザを開くには、BrowserHelper.Instance.Openメソッドを呼び出します。ビルドインのブラウザーを使用するには、url変数とtrue値をメソッドに渡します。

Note
ソーシャルログインは、外部のブラウザでは利用できません。SDKには、エクソラが開発した組み込みブラウザが含まれています。エクソラのビルトインブラウザまたは他のビルトインブラウジングソリューションのいずれかを使用することができます。

    1. トークンを取得してブラウザを閉じるために、ユーザー登録が成功した後のページURLの変化を追跡します:
      1. singlePageBrowser変数を宣言し、BrowserHelper.Instance.GetLastBrowser SDKメソッドで初期化します。
      2. アクティブページのURL変更イベントを受信し、ハンドラとしてOnUrlChangedメソッドを設定します。

  1. トークンの取得を実装します:
    1. OnUrlChangedメソッドで渡されたアクティブページのURLを解析するために、ParseUtils.TryGetValueFromUrlユーティリティーメソッドを使用します。
    2. アクティブページのURLに認証コードが含まれているかどうかをチェックする機能を追加します。ParseUtils.TryGetValueFromUrlメソッドは、code変数で認証コードを渡します。
    3. 認証コードをトークンと交換するには、ExchangeCodeToToken SDKメソッドを呼び出し、code変数と以下のメソッドを渡します:
      • OnSuccess — 登録が成功した場合に呼び出される
      • OnError — エラーが発生した場合に呼び出される

Note

スクリプトの例では、OnSuccessOnErrorメソッドは標準のDebug.Logメソッドを呼び出します。他のアクションを追加することができます。

ユーザーがログインに成功すると、認証トークンがtokenパラメータで渡されます。このトークンは、エクソラサーバへのリクエストで使用されます。エラーが発生した場合は、そのコードと説明がerrorパラメータに渡されます。

    1. トークンを取得したら、ブラウザでゲームオブジェクトを削除します。

ログインページのスクリプトの例:

Copy
Full screen
Small screen
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

                var singlePageBrowser = BrowserHelper.Instance.GetLastBrowser();
                singlePageBrowser.GetComponent<XsollaBrowser>().Navigate.UrlChangedEvent += OnUrlChanged;
            });
        }


        // Getting token

        private void OnUrlChanged(IXsollaBrowser browser, 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
     }
    }
}

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
このページを評価する
このページを評価する
改善できることはありますか?

答えたくない

ご意見ありがとうございました!
最終更新日: 2021年6月17日

誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!