Unity専用now.ggログインモジュールを使用すると、Unity上のアプリ/ゲームにnow.ggログインを実装することができます。
now.ggログインモジュールを使用してログインを実装する方法は以下の通りです。
Unity専用now.ggログインモジュールは、UnityパッケージファイルNowGGUnitySdk.unitypackageとして含まれています。
Unity プロジェクトにモジュールを追加する:
NowGGUnitySdk.unitypackage を選択。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