Unity専用now.ggログインモジュールを使用すると、Unity上のアプリ/ゲームにnow.ggログインを実装することができます。
now.ggログインモジュールを使用してログインを実装する方法は以下の通りです。
Unity専用now.ggログインモジュールは、Unityパッケージファイルnowgg-payments-login.unitypackage
として含まれています。
Unityプロジェクトにモジュールを追加する:
nowgg-payments-login.unitypackage
を選択します。すべてのモジュールファイルがインポートされると、「NowGGSdk」というフォルダがプロジェクトに追加されます。このフォルダはAssetsフォルダのルートにあります。
※NowGGSdk フォルダには、now.ggログインに関連するすべてのアセットが含 まれていますので、変更しないでください。
この操作は、Unity External Dependency Managerを使用して、必要なすべての依存関係をダウンロードし、プロジェクトのAssets/Plugins/Android
ディレクトリに追加します。
必要な依存関係を追加するには、以下の手順に従ってください。
now.ggログインモジュールがインポートされ、依存関係が追加された後、now.ggログインを自身のアプリ/ゲームに統合するコードを実装します。
now.ggサインインボタンのアセットは、now.gg SDKパッケージのAssets/Login
ディレクトリに含まれています。
now.ggログイン実装を含むクラスを作成し、ログインプロセスを開始できるゲームオブジェクトにアタッチします。
now.ggログインを実装するには、以下の2つのフローのいずれかを使用します。
このフローを使用すると、now.ggログインを実装し、ユーザーの基本プロファイル情報を取得できます。
フローを開始するには、以下のようにclient_id
を使用してNowGGLoginSdkManager
のログイン関数を呼び出します。
private string CLIENT_ID = "your_client_id"; public void Start() { NowGGLoginSdkManager.Instance.OnLoginSuccess += OnLoginSuccess; NowGGLoginSdkManager.Instance.OnLoginFailed += OnLoginFailed; } // ユーザーがサインインボタンをクリックしたときにこのメソッドを呼び出します。 public void OnLoginButtonClick() { 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ログインモジュールに関連するレスポンスは、OnLoginSuccess
およびOnLoginFailed
コールバック関数を使用して受け取ることができます。
ユーザーがログインに成功すると、OnLoginSuccess
コールバック関数で、要求されたtoken
をユーザーのメールアドレスとともにtokenパラメータで取得します。
このフローでは、now.ggログインを実装し、詳細なユーザー情報とセッション情報を取得することができます。
これは、token
とrefresh_token
を生成するために承認コードを使用する、より安全なフローです。
以下のように、追加パラメータとして(code)とともにclient_id
を使用して、NowGGLoginSdkManager
クラスのログイン関数を呼び出します。
private string CLIENT_ID = "your_client_id"; public void Start() { NowGGLoginSdkManager.Instance.OnLoginSuccess += OnLoginSuccess; NowGGLoginSdkManager.Instance.OnLoginFailed += OnLoginFailed; } // ユーザーがサインインボタンをクリックしたときにこのメソッドを呼び出します。 public void OnLoginButtonClick() { 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 ログインモジュールに関連するレスポンスは、OnLoginSuccess
およびOnLoginFailed
コールバック関数を使用して受け取ることができます。
ユーザーがサインインに成功すると、OnLoginSuccess
コールバック関数で、要求された承認コードをtoken
パラメータに、ユーザーのメールアドレスを取得します。
このセクションでは、ログインに失敗するシナリオをリストアップします。基本ログインフローと高度なログインフローの両方に適用できます。
ログインに失敗すると、OnLoginFailed
コールバック関数にエラーコードとエラーメッセージが表示されます。受信したエラーメッセージに基づいて、このエラーをさらに調査することができます。
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
をアプリのバックエンドサーバで使用し、このセクションを参照してサインインしたユーザーのユーザープロファイルを取得することをお勧めします。
アプリにバックエンドサーバーがない場合は、以下のセクションを使用してユーザープロファイル情報を取得できます。
「オンデバイス」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; }
このクラスはモジュールデモプロジェクト内にもあります。
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; }
ユーザー情報を取得したら、その情報をアプリのデータベースに保存し、次回ユーザーがアプリを起動したときにログインプロセスをスキップするために使用する必要があります。
注意:
userDataVerified.userId
を使用してuserId
を取得できます。高度なログインフロー:
token
とrefresh_token
を取得します。
注意:
承認コードを取得したら、それをアプリのバックエンドサーバーに送信し、Generate Tokens APIを使用してこのコードをnow.ggサーバーと交換し、token
とrefresh_token
を取得します。
token
を取得するためにrefresh_token
を保存します。token
を取得したら、それを使ってユーザー情報とセッション情報を取得します。
token
の有効期限が切れている場合は、Generate Tokens APIを使用してrefresh_token
でトークンを生成できます。
サポートが必要な場合
dev-support@now.ggまでメールにてご連絡ください。
ユーザーアカウントサービス
ユーザーアカウントサービス
ドキュメント改訂版 1.0