Unity専用ログインモジュール

Unity専用now.ggログインモジュールを使用すると、Unity上のアプリ/ゲームにnow.ggログインを実装することができます。

now.ggログインモジュールを使用してログインを実装する方法は以下の通りです。

  1. Unity専用now.ggログインモジュールをダウンロードしてインポートします。
  2. 必要な依存関係を追加します。
  3. プロジェクトにnow.ggログインを実装します。

モジュールのダウンロードとインポート

Unity専用now.ggログインモジュールは、Unityパッケージファイルnowgg-payments-login.unitypackageとして含まれています。

Unityプロジェクトにモジュールを追加する:

  1. Unity専用now.ggログインモジュールの最新バージョンを含むパッケージをダウンロードします。
  2. モジュールをダウンロードしたら、Unityプロジェクトにインポートします。
  3. Assets > Import Package > Custom Packageをクリックします。
    • 以前ダウンロードしたnowgg-payments-login.unitypackageを選択します。
    • リストされたファイルをすべて選択し、インポートをクリックします。

すべてのモジュールファイルがインポートされると、「NowGGSdk」というフォルダがプロジェクトに追加されます。このフォルダはAssetsフォルダのルートにあります。

NowGGSdk フォルダには、now.ggログインに関連するすべてのアセットが含 まれていますので、変更しないでください。

必要な依存関係の追加

この操作は、Unity External Dependency Managerを使用して、必要なすべての依存関係をダウンロードし、プロジェクトのAssets/Plugins/Androidディレクトリに追加します。

必要な依存関係を追加するには、以下の手順に従ってください。

  • Assets > External Dependency Manager > Android Resolver > Resolveの順に進みます。

now.ggログインの実装

now.ggログインモジュールがインポートされ、依存関係が追加された後、now.ggログインを自身のアプリ/ゲームに統合するコードを実装します。

now.ggログイン実装を含むクラスを作成し、ログインプロセスを開始できるゲームオブジェクトにアタッチします。

now.ggログインを実装するには、以下の2つのフローのいずれかを使用します。

1. 基本的なログインフロー

このフローを使用すると、now.ggログインを実装し、ユーザーの基本プロファイル情報を取得できます。

フローを開始するには、以下のようにclient_idを使用してNowGGLoginSdkManagerのログイン関数を呼び出します。

private string CLIENT_ID = "your_client_id";

 public void Start()
 {
    NowGGLoginSdkManager.Instance.OnLoginSuccess += OnLoginSuccess;
    NowGGLoginSdkManager.Instance.OnLoginFailed += OnLoginFailed;

    NowGGLoginSdkManager.Instance.Login(CLIENT_ID);
 }

 private void OnLoginSuccess(string email, string token, string hostUrl)
 {
    Debug.Log($"Login success with email: {email} and token is: {token}");
 }

 private void OnLoginFailed(int errorCode, string errorMsg)
 {
    Debug.Log($"Login failed with error code: {errorCode} and message: {errorMsg}");
 }

※now.ggログインSDKに関連するレスポンスは、OnLoginSuccessおよびOnLoginFailedコールバック関数を使用して受け取ることができます。
ログインの成功

ユーザーがログインに成功すると、OnLoginSuccessコールバック関数で、要求されたtokenをユーザーのメールアドレスとともにtokenパラメータで取得します。

  • プロファイル情報の使用セクションに移動すると、ユーザの基本プロファイル情報を取得できます。

2. 高度なログインフロー

このフローでは、now.ggログインを実装し、詳細なユーザー情報とセッション情報を取得することができます。

これは、tokenrefresh_tokenを生成するために承認コードを使用する、より安全なフローです。

以下のように、追加パラメータとして(code)とともにclient_idを使用して、NowGGLoginSdkManagerクラスのログイン関数を呼び出します。

private string CLIENT_ID = "your_client_id";

 public void Start()
 {
    NowGGLoginSdkManager.Instance.OnLoginSuccess += OnLoginSuccess;
    NowGGLoginSdkManager.Instance.OnLoginFailed += OnLoginFailed;

    NowGGLoginSdkManager.Instance.Login(CLIENT_ID, "code");
 }

 private void OnLoginSuccess(string email, string token, string hostUrl)
 {
    Debug.Log($"Login success with email: {email} and authorization code is: {token}");
 }

 private void OnLoginFailed(int errorCode, string errorMsg)
 {
    Debug.Log($"Login failed with error code: {errorCode} and message: {errorMsg}");
 }

※now.gg ログインSDKに関連するレスポンスは、OnLoginSuccessおよびOnLoginFailedコールバック関数を使用して受け取ることができます。

ログインの成功

ユーザーがサインインに成功すると、OnLoginSuccessコールバック関数で、要求された承認コードをtokenパラメータに、ユーザーのメールアドレスを取得します。


ログインの失敗

このセクションでは、ログインに失敗するシナリオをリストアップします。基本ログインフローと高度なログインフローの両方に適用できます。

ログインに失敗すると、OnLoginFailedコールバック関数にエラーコードとエラーメッセージが表示されます。受信したエラーメッセージに基づいて、このエラーをさらに調査することができます。

No nowGG account present

No nowGG account present(nowGGアカウントが存在しません)」というエラーでログインに失敗する場合は、NowGGGLoginSdkManagerクラスのAddNowGGAccount関数を呼び出して、以下のように実行時にアカウントを追加することができます。

private void OnLoginFailed(int errorCode, string errorMsg)
 {
     statusText.text = "Login Failed: " + errorMsg;
     if (errorMsg.Equals("No nowgg account present") || errorCode == 1)
         NowGGLoginSdkManager.Instance.AddNowGGAccount();
 }

プロファイル情報の使用 | 基本的なログインフロー

サインインに成功すると、tokenが発行されます。このトークンを使って、ユーザープロファイル情報を取得することができます。

このtokenをアプリのバックエンドサーバで使用し、このセクションを参照してサインインしたユーザーのユーザープロファイルを取得することをお勧めします。

重要な情報

  • 現在サインインしているユーザーをアプリのバックエンドサーバーに伝えるのに、ユーザーのメールアドレスやユーザーIDを使用しないでください。代わりに、ユーザーのIDトークンをバックエンドサーバーに送信し、サーバー上でトークンを検証してください。

アプリにバックエンドサーバーがない場合は、以下のセクションを使用してユーザープロファイル情報を取得できます。

プロファイル情報の取得

「オンデバイス」APIコールを使用してログインユーザーのプロファイル情報を取得するサンプル実装を確認できます。デモプロジェクトを参照してください。

例えば、サインインしたユーザーのuserIdを含むユーザープロファイル情報を取得するには、LoginTokenVerificationクラスのVerifyToken関数を呼び出し、TokenVerifyResponseコールバックのuserDataVerifiedオブジェクトで必要な情報を取得します。

次のコードは、この実装を示しています:

private void OnLoginSuccess(string email, string token, string hostUrl)
 {
     Debug.Log($"Login success with email: {email} and token is: {token}");

     // verify the token to get user details. We recommend verifying the token on your backend server for more security.
     StartCoroutine(LoginTokenVefication.VerifyToken(token, CLIENT_ID, TokenVerifyResponse));
 }

 private void TokenVerifyResponse(UserDataVerified userDataVerified)
 {
     Debug.Log($"User id: {userDataVerified.userId}");
     string userId = userDataVerified.userId;
     string name = userDataVerified.name;
     string email = userDataVerified.email;
     string picture = userDataVerified.picture;
 }
LoginToken検証クラス:

このクラスはSDKデモプロジェクト内にもあります。

using System;
 using System.Collections;
 using UnityEngine;
 using UnityEngine.Networking;

 public class LoginTokenVerification : MonoBehaviour
 {
     public static IEnumerator VerifyToken(string token, string client_id, Action tokenVerifyResponse)
     {
         WWWForm form = new WWWForm();
         form.AddField("token_type", "id_token");
         form.AddField("token", token);
         form.AddField("client_id", client_id);

         UnityWebRequest www = UnityWebRequest.Post("https://now.gg/accounts/oauth2/v1/verify-token", form);
         yield return www.SendWebRequest();

         if (www.result != UnityWebRequest.Result.Success)
         {
             Debug.Log($"Error in token verification: {www.error}");
         }
         else
         {
             Debug.Log($"token verification response: {www.downloadHandler.text}");
             TokenVerification tokenVerification = JsonUtility.FromJson(www.downloadHandler.text);
             if (tokenVerifyResponse != null)
                 tokenVerifyResponse(tokenVerification.userData);
         }
     }
 }

 [System.Serializable]
 public class TokenVerification
 {
     public string success;
     public string code;
     [SerializeField] private UserDataVerified decodedData;
     public UserDataVerified userData { get { return decodedData; } }
     public string msg;
 }

 [System.Serializable]
 public class UserDataVerified
 {
     public string iss;
     public string sub;
     public string aud;
     public string exp;
     public string iat;
     public string auth_time;
     public string tokenId;
     public string sessionId;
     public string scope;
     public string email;
     public string name;
     public string picture;
     public string mobile;
     public string userId;
 }

ユーザー情報を取得したら、その情報をアプリのデータベースに保存し、次回ユーザーがアプリを起動したときにログインプロセスをスキップするために使用する必要があります。

注意:

  • ユーザーを識別するためにメールアドレスを使用しないことをお勧めします。代わりにuserIdを使用してください。
  • アプリにバックエンドサーバーがない場合は、クライアントでuserDataVerified.userIdを使用してuserIdを取得できます。
  • アプリにバックエンドサーバーがある場合は、verify token APIを呼び出し、ユーザーデータとともにレスポンスとしてuserIdを取得できます。

ユーザー情報とセッション情報の取得|高度なログインフロー

高度なログインフロー:

  • アプリは、承認コードをアプリのバックエンドサーバーに送信することで、クライアント側で認証を受けます。
  • アプリのバックエンドサーバーは承認コードを交換して、now.ggサーバーから独自のtokenrefresh_tokenを取得します。
    • これにより、アプリのバックエンドサーバーは、ユーザーがオフラインの間にnow.ggサーバーにAPIコールを行うことができます。

注意:

  • これはより安全なログイン認証フローであり、バックエンドサーバーを持つアプリにのみ適用されます。
  • アプリにバックエンドサーバーがない場合は、基本的なログインフローを続けることができます。

1. トークンの生成とトークンの更新

承認コードを取得したら、それをアプリのバックエンドサーバーに送信し、Generate Tokens APIを使用してこのコードをnow.ggサーバーと交換し、tokenrefresh_tokenを取得します。

  • tokenを使用して、nowow.gg API(ユーザー情報とセッション情報)を呼び出します。
  • トークンの有効期限が切れた場合、新しいtokenを取得するためにrefresh_tokenを保存します。

2. トークンを使ってユーザー情報とセッション情報を取得する

tokenを取得したら、それを使ってユーザー情報とセッション情報を取得します。

  • ユーザー情報を取得するには、UserInfo APIを使用します。
  • セッション情報を取得するには、SessionInfo APIを使用します。

3. トークンの更新

tokenの有効期限が切れている場合は、Generate Tokens APIを使用してrefresh_tokenでトークンを生成できます。

サポートが必要な場合

dev-support@now.ggまでメールにてご連絡ください。

×
テキストがクリップボードにコピーされました。
copyLinkText
ご不明な点がございましたら、お気軽にお問い合わせください。 dev-support@now.gg