認証
一般情報
ユーザーのログインと登録のためのソリューションは、ログイン製品をベースにしています。プロジェクトの認証設定は、パブリッシャーアカウントのログインセクションで行います。
OAuth 2.0プロトコルは、クライアントアプリケーションの開発しやすさに重点を置いています。OAuth 2.0では、ユーザーの介入なしにトークンを更新することができます。JWT認証では、トークンを更新するために、ユーザーは資格情報を入力し、アプリケーションにログインする必要があります。
OAuth 2.0はおすすめの認証方法であり、デフォルトでSDK設定で選択されています。詳しくは、OAuth 2.0認証のセットアップ方法をご覧ください。
アプリケーションでJWT認証を使用する場合、トークンを無効化するをお勧めします。
この記事は役に立ちましたか?
ユーザー名またはメールアドレスでユーザーを認証することができます。
サインアップの際、ユーザー名で認証を行う場合でも、メールアドレスの指定が必要です。このメールアドレスは、サインアップの確認とパスワードのリセットに使用されます。
登録に成功すると、ユーザーは指定したアドレスに登録確認メールを受け取ります。パブリッシャーアカウントで、ユーザーに送られるメールはカスタマイズできます。
この記事は役に立ちましたか?
ソーシャルログインは、アプリケーションの主要な認証方法として、または代替の認証方法として使用することができます。
ユーザーの初回ログインがソーシャルネットワーク経由の場合、新しいアカウントが自動的に作成されます。
代替の認証方法としてソーシャルログインを使用する場合、以下の条件を満たすと、ソーシャルネットワークのアカウントは自動的に既存のユーザーアカウントに紐付けられます:
- ユーザー名/メールアドレスとパスワードでサインアップしたユーザーが、ソーシャルネットワークアカウントを介してアプリケーションにログインしました。
- ソーシャルネットワークでは、メールアドレスを返します。
- ソーシャルネットワークでのユーザーのメールアドレスは、アプリケーションで登録に使用したメールアドレスと同じです。
SDKは、ソーシャルログインのために以下のプロバイダーをサポートしています:
- Amazon
- Apple
- Baidu
- Battle.net
- Discord
- GitHub
- Kakao
- MSN
- Mail.ru
- Microsoft
- Naver
- Odnoklassniki
- PayPal
- Steam
- Twitch.tv
- VK
- Vimeo
- Xbox Live
- Yahoo
- Yandex
- YouTube
モバイルアプリケーションの場合、SDKはユーザーの端末でソーシャルネットワーククライアントを介したソーシャルログイン(ソーシャルネットワークを介したネイティブ認証)にも対応しています。現在、SDKは以下のプロバイダーをネイティブ認証に対応しています:
この記事は役に立ちましたか?
エクソラランチャーやSteamを使用してユーザーにアプリケーションを配信する場合、ランチャーの認証情報を使って自動的にユーザー認証を行うことができます。
この記事は役に立ちましたか?
デバイスID認証は、ユーザーが登録データを入力することなく、モバイルデバイスでアプリケーションを使い始めることを可能にします。ユーザーが初めてデバイスIDを使ってアプリケーションにログインすると、新しいアカウントが自動的に作成され、ユーザー名やメールアドレスなどを入力する必要がありません。SDKは、AndroidおよびiOSのモバイル端末のIDによる認証に対応しています。
お役立ちリンク
この記事は役に立ちましたか?
この記事は役に立ちましたか?
プライバシーポリシー
SDKを使用する場合は、エクソラ個人情報保護方針契約のリンクをアプリケーションに追加してください。このリンクの例は、サインアップページのデモプロジェクトで見ることができます。
ハウツー
OAuth 2.0では、長持ちするトークンの代わりに、短命のトークンを使用しています(リフレッシュトークン)。リフレッシュトークンを使用することで、ユーザーはユーザー名とパスワードを再入力することなく、長期間アプリケーションに滞在することができます。これにより、ユーザー認証データが危険にさらされるリスクがなくなります。
認証用にOAuth 2.0を設定するには:
- ユーザー名またはメールとパスワード経由
- ソーシャルネットワーク経由
- Steam経由
オプションが有効な場合、ユーザー登録と認証は、
OAuth 2.0認証を設定するには:
- パブリッシャーアカウントでログインプロジェクトのOAuth 2.0認証をセットアップします。
- Unityプロジェクトでアセットをセットアップします。
パブリッシャーアカウントでログインプロジェクトのOAuth 2.0認証を設定する
- パブリッシャーアカウントに移動します。
- サイドメニューでログインをクリックします。
- ログインプロジェクトペインで構成するをクリックします。
- セキュリティブロックに移動してOAuth 2.0セクションを選択します。
- OAuth 2.0を追加するをクリックします。
- OAuth 2.0リダイレクトURIを指定して接続するをクリックします。
- クライアントIDをコピーして保存します。
Unityプロジェクトでアセットをセットアップする
- Unityプロジェクトに移動します。
- メインメニューで
Window > Xsolla > Edit Settings をクリックします。 Inspector パネルで:Authorization Type フィールドでOAuth2.0 を選択します。OAuth2.0 client ID フィールドで、パブリッシャーアカウントでOAuth 2.0を設定するときに受信したクライアントID を指定します。
更新トークンを操作するために、SDKには次のメソッドが実装されています:
RefreshOAuthToken
— 以前保存されたOAuth2.0更新トークンを使用して既存のトークンを更新します。ExchangeCodeToToken
— ユーザーの認証コードを有効なJWTと交換します。
GetSocialNetworkAuthUrl
メソッドにあるoauthState
引数は、OAuth 2.0認証時の追加のユーザ検証に使用されます。この引数は、CSRF 攻撃の可能性を軽減するために使用されます。
この記事は役に立ちましたか?
本SDKは、お客様独自の認証システムと統合することができます。そのためには、カスタムID(サーバーで生成したユーザーID)によるユーザー識別を実装し、ゲーム内ストアの開設、決済、インベントリ管理などを行います。
独自の認証システムを使用する場合のエクソラサーバーとのインタラクションのフローは以下の通り:
- クライアントは、サーバーに認証リクエストを送信します。
- サーバーはユーザーを認証し、エクソラサーバーにユーザーJSONウェブトークン(JWT)を受け取るリクエストを送信し、カスタムIDを渡します。
- エクソラサーバーはユーザーJWTを返します。
- サーバーは、ユーザーJWTをクライアントに渡します。
- SDKメソッドでは、受け取ったユーザーJWTを認証トークンを代用として、ゲーム内ストアの開設、決済、インベントリ管理を行います。
エクソラ製品で独自の認証システムを使用するには:
- パブリッシャーアカウントでサーバーOAuth 2.0クライアントをセットアップします。
- サーバーJWTの取得を実装します。
- ユーザーJWTの取得を実装します。
- ユーザーJWTを使用して、ゲーム内ストア、購入、インベントリを操作するロジックを実装します。
サーバーOAuth 2.0クライアントをセットアップする
- パブリッシャーアカウントでプロジェクトを開き、ログインセクションに移動します。
- ログインプロジェクトのパネルでの構成するをクリックします。
- セキュリティブロックに移動してOAuth 2.0セクションに移動します。
- OAuth 2.0を追加するをクリックします。
- OAuth 2.0のリダイレクトURIを指定します。
- サーバー(サーバー・トゥ・サーバー接続)チェックボックスを入ります。
- 接続をクリックします。
- クライアントIDと秘密鍵をコピーして保存してください。
サーバーJWTを取得する
アプリケーションのバックエンドで、JWTを生成するAPIコールを使用してサーバーJWTを取得するメソッドを実装します。リクエストには、以下のパラメータを含める必要があります:
grant_type
はJWTタイプで、client_credentials
の値を渡します。client_secret
は、サーバーOAuth 2.0クライアントをセットアップする際に受け取る秘密鍵です。client_id
は、サーバーOAuth 2.0クライアントをセットアップする時に受け取ったクライアントIDです。
ユーザーJWTを取得する
アプリケーションのバックエンドで、custom IDによる認証APIコールを使用してユーザーJWTを取得するメソッドを実装します。リクエストはX-Server-Authorization: <server_JWT>
ヘッダーを含まなければなりません。ここで、<server_JWT>
は前のステップで取得したサーバーJWTです。
ユーザーJWTを使用する
SDKメソッドを使用して、ゲーム内ストアの開設、決済、インベントリ管理を行います。SDKメソッドを使用している際に、ユーザーJWTをToken.Instance
プロパティに渡します。
以下のチュートリアルでは、トークンの使用例を紹介しています:
期限切れ後に新しいユーザーJWTを受け取るためのロジックを実装します。ユーザーがアプリケーションに再度ログインする必要がないように、バックグランドモードで新しいトークンを取得することをお勧めします。
この記事は役に立ちましたか?
ネイティブ認証は、ユーザーがモバイルデバイスに設定されたソーシャルネットワークアカウントを介してアプリケーションにログインすることを可能にします。
ユーザーが初めてログインすると、ソーシャルネットワーキングアプリケーションが起動し、ユーザー認証の許可を求めます。その後は、ユーザーが何もしなくても自動的に認証が行われます。
現在、SDKは以下のソーシャルネットワーク経由のネイティブ認証を実装しています:
ネイティブ認証を設定するには:
- Android用のUnityプロジェクトビルドを作成します。
- ソーシャルネットワークの開発者アカウントでアプリケーションの設定を行います:
- Facebookによる認証の場合:
- 登録して、新しいアプリケーションを作成します。
- Facebook開発者アカウントで、アプリケーションページを設定します。
- Googleによる認証の場合:Google API Consoleでプロジェクトを設定します。
- WeChatによる認証の場合:
- 登録して、新しいアプリケーションを作成します。
- 審査のためにアプリケーションを提出してください。
- QQによる認証の場合:
- 登録して、新しいアプリケーションを作成します。
- 審査のためにアプリケーションを提出してください。
- Facebookによる認証の場合:
- エクソラ側でソーシャルネットワークによる認証を設定します:
- FacebookとGoogleの場合は、パブリッシャーアカウントでソーシャルコネクションを設定します。
- WeChatとQQの場合は、あなたのアカウントマネージャーをお問い合わせてください。
- Unityプロジェクトのアセットを設定します。
Android用Unityプロジェクトビルドを作成する
- Unityプロジェクトに移動します。
- メインメニューで
File > Build settings をクリックします。 Platform パネルでAndroid をクリックします。Build をクリックします。
ネイティブ認証の設定に関する詳細については、以下のものが必要です:
File > Build settings でAndroid プラットフォームを選択後、Inspector パネル内のPackage Name フィールドで見つかったパッケージ名。- Androidクラス名 — アプリケーションの名前空間(例:
com.domain.appname.activity
)を含む、主活動のクラス名。クラス名はAndroidManifest.xml
で確認することができます。主活動のタグには、アクションandroid.intent.action.MAIN
とカテゴリーandroid.intent.category.LAUNCHER
を持つintent-filter
タグが必要です。 - Androidハッシュキー。OpenSSLで取得することができます。
Facebook開発者アカウントでアプリケーションページをセットアップする
- Facebook開発者アカウントのプロジェクト設定に移動します。
- 設定 > 基本に移動します。
- プラットフォームを追加をクリックし、Androidを選択します。
- Google Playパッケージ名フィールドでUnityプロジェクトのパッケージ名を指定します。
- クラス名フィールドでUnityプロジェクトのAndroidクラス名を指定します。
- キーハッシュフィールドでUnityプロジェクトのハッシュキーを指定します。
- 変更内容を保存をクリックします。
さらにネイティブ認証の設定を行うには、設定 > 基本セクションのプロジェクト設定にあるアプリIDとアプリシークレットが必要です。
Google API Consoleでプロジェクトをセットアップする
- Google API Consoleに移動します。
- 新しいプロジェクトをクリックします。
- プロジェクト名と場所を指定して保存するをクリックします。
- 作成したプロジェクトに移動してサイドメニューでのOAuth同意画面をクリックします。
- 外部オプションを選択して作成するをクリックします。
- 必要なパラメータを指定して、保存をクリックします。サイドメニューで
- 資格情報をクリックします。
- Unityアプリ用のOAuth 2.0クライアントを作成します:
- 資格情報を作成をクリックして、OAuthクライアントIDを選択します。
- アプリケーションタイプフィールドでAndroidを指定します。
- 名前を指定します。
- パッケージ名フィールドでUnityプロジェクトのパッケージ名を指定します。
- SHA-1証明書のフィンガープリントフィールドでUnityプロジェクトのAndroidハッシュキーを指定します。
- 作成をクリックします。
- OKをクリックします。
- Webアプリケーション用のOAuth 2.0クライアントを作成します:
- 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
- アプリケーションタイプフィールドでウェブアプリケーションを指定します。
- 名称を指定します。
- 許可されたリダイレクトURIセクションでURIを追加するをクリックして、
https://login.xsolla.com/api/social/oauth2/callback
URIを指定します。 - 作成するクリックします。
- OKクリックします。
さらにネイティブ認証の設定を行うには、ウェブアプリケーションのクライアントIDの設定にあるクライアントIDとクライアントシークレットが必要です。
エクソラパブリッシャーアカウントでログインプロジェクトのソーシャルコネクションを設定します
- パブリッシャーアカウントでプロジェクトを開きます。
- サイドメニューのログインをクリックし、ログインプロジェクト > ログインプロジェクト > ソーシャル接続に移動します。
- Facebook経由で認証を設定するには:
- Facebookパネルで編集するをクリックしてステータスを切断済みを変更します。
- アプリケーションIDフィールドでのFacebook開発者アカウントからアプリIDを指定します。
- アプリケーションシークレットフィールドでのFacebook開発者アカウントからアプリシークレットを指定します。
- 接続するをクリックします。
- Google経由で認証を設定するには:
- Googleパネルで編集するをクリックしてステータスを切断済みを変更します。
- アプリケーションIDフィールドでのGoogle API ConsoleからクライアントIDを指定します。
- アプリケーションシークレットフィールドでのGoogle API Consoleからクライアントシークレットを指定します。
- 接続するをクリックします。
Unityプロジェクトのアセットをセットアップする
- Unityプロジェクトに移動します。
- メインメニューで
Window > Xsolla > Edit Settings をクリックします。 - アプリケーションIDを指定します:
Facebook App ID フィールドでのFacebook開発者アカウントからアプリIDを指定します。Google server ID フィールドでのGoogle API ConsoleからウェブアプリケーションのクライアントIDを指定します。WeChat App ID でAppIDをWeChatアプリケーションの設定から指定します。QQ App ID でAppIDをQQアプリケーションの設定から指定します。
この記事は役に立ちましたか?
ネイティブ認証により、プレーヤーはインストールされたSteamアプリケーションを介してアプリケーションに入ることができます。
ネイティブ認証を設定するには:
- パブリッシャーアカウントでStreamを介してサイレント認証をセットアップします。
- Unityプロジェクトを構成します。
- イベントの処理を構成します。
- Steamを介して認証を確認します。
Unityプロジェクトを構成する
steam_appid.txt
ファイルを作成し、SteamにアプリケーションIDを入力します。次に、このファイルをプロジェクトのAssets/Plugins/Steamworks.NET/redist/
カタログに配置します。
Assets/Plugins/Steamworks.NET/redist/
カタログにsteam_appid.txt
ファイルがあります。このファイルには、デモプロジェクトのSteamのアプリケーションIDが含まれています。- Unityプロジェクトを開きます。
- メインメニューで、
Window > Xsolla > Demo Settings に移動します。 Inspector パネルで:Use Steam authorization ボックスをチェックします。Steam App ID フィールド、SteamでアプリケーションIDを指定します。この値は、steam_appid.txt
ファイルの値と同じである必要があります。
イベントの処理を構成する
Steam経由でユーザー認証を行うためにはsession ticket
をSilentAuth
型にパスします。例えば、 デモプロジェクトのSteamAuth.cs
を表示します。
Steamによる認証を確認する
- スタンドアロンプラットフォーム用のUnityプロジェクトのビルドを作成するか、シーンを開始します。
- Steamを起動してログインします。
- アプリケーションを起動します。すべてが正しければ、Steamポップアップウィンドウが表示されます。
この記事は役に立ちましたか?
トークンの無効化により、アプリケーション内のユーザー認証データのセキュリティを向上させることができます。このオプションを有効にすると、ユーザーが認証を行うたびに無効になる古いトークンが新しいトークンに置き換わります。
SDKを利用する場合、with_logout
パラメータが1
に設置すると、
Unityプロジェクトでトークン無効化を有効にするには:
- メインメニューで、
Window > Xsolla > Edit Settings に移動します。 Inspector パネルに行きます。Authorizaton Type フィールドでJWT を選択します。Invalidate Existing Sessions チェックボックスをオンにします。
この記事は役に立ちましたか?
エクソラランチャーを使用して、アプリケーションをユーザーに配信したり、更新したりすることができます。ランチャーには認証ツールが組み込まれています。ユーザー名とパスワードを再入力する必要がないように、ランチャーを介してアプリケーションの認証を設定します。
SDKとランチャーを連携するためにセットアップする
- パブリッシャーアカウントでランチャーをセットアップします。
config.json
ファイルで、以下のオブジェクトの値を変更するだけで十分です:launcher_project_id
— パブリッシャーアカウント > ランチャー > 一般設定 > 一般情報にあるランチャーIDを指定します。login_project_id
— パブリッシャーアカウント > ランチャー > 一般設定 > 認証にあるログインIDを指定します
- あなたのアプリケーションのランチャー認証ロジックを実装します。
- ランチャーインストールファイルとビルドアーカイブを生成します。
- アプリケーションのビルドを作成します。
- アプリケーションのビルドをエクソラアップデートサーバーにアップロードします。
ランチャーによる認証ロジックを実装する
ランチャーによるアプリケーションでの認証の流れは以下の通り:
- ユーザーはランチャーで認証されています。
- ユーザーはアプリケーションをインストールして実行します。
- ランチャーは、アプリケーションを実行し、コマンドラインでユーザーのパラメータを渡します。認証トークンは、
xsolla-login-token
パラメータで渡されます。 - アプリケーションは、コマンドラインパラメーターを処理し、トークンを取得します。トークン処理スクリプトの例は、デモプロジェクトで見ることができます。
- アプリケーションは受信したトークンを検証します。トークン検証スクリプトの例は、デモプロジェクトで見ることができます。
- アプリケーションは、認証ページを表示することなく、自動的にユーザーを認証します。ユーザー認証スクリプトの例は、デモプロジェクトで見ることができます。
Token.Instance
の属性に渡します。アプリケーションのビルドを作成する
- Unityプロジェクトに移動します。
- メインメニューで
Window > Xsolla > Edit Settings をクリックします。IInspector パネルで:Project ID フィールドで、パブリッシャーアカウント > プロジェクト設定 > プロジェクトIDにあるプロジェクトIDを指定します。Login ID フィールドで、パブリッシャーアカウント > ランチャー > 一般設定 > 認証にあるログインIDを指定します。
- トークンが処理されるユーザー認証シーンを実行します。
- メインメニューで
File > Build settings をクリックし、そしてAdd Open Scenes をクリックします。認可シーンがリストの最初に追加されていることを確認してください。 Build をクリックします。- ポップアップウィンドウで、完成したビルドが置かれるディレクトリへのパスを指定します。
この記事は役に立ちましたか?
デバイスID認証は、ユーザーが登録データを入力することなく、モバイルデバイスでアプリケーションを使い始めることを可能にします。ユーザーが初めてデバイスIDを使ってアプリケーションにログインすると、新しいアカウントが自動的に作成され、ユーザー名やメールアドレスなどを入力する必要がありません。
デバイスIDを使用すると、バックグラウンドモードで1台または複数のモバイルデバイスにユーザー認証を実装することができます。この機能を利用するには、ユーザーはデバイスIDを既存のアカウントにリンクさせる必要があります。
本SDKは、AndroidおよびiOSのモバイルデバイスのIDによる認証に対応しています。
デバイスIDを取得する
デバイスIDは、プラットフォームによって生成され、モバイルデバイスにインストールされたアプリケーションが利用できます。SDKはプラットフォームのAPIを使ってIDの値を取得し、この値を使ってエクソラAPIを使って様々な機能を実行します。
iOSデバイスのIDは、UIDevice.identifierForVendorプロパティで渡されます。IDの決定には、Unityの標準メソッドであるSystemInfo.deviceUniqueIdentifierが使用されます。
AndroidデバイスIDは、android.provider.Settings.Secure.ANDROID_ID定数で渡されます。Unityの標準的なメソッドでは、AndroidデバイスのIDがMD5ハッシュとして返されますが、これはXsolla APIの呼び出しには不適切であるため、SDKでは独自のロジックでIDを決定しています。
SDKメソッド
本SDKは以下の機能のメソッドを実装しています:
認証
SDKメソッドの名称 | 説明 |
---|---|
AuthViaDeviceID | 現在のデバイスIDを使って、ユーザーをアプリケーションに認証します。 |
アカウントアップグレード
SDKメソッドの名称 | 説明 |
---|---|
AddUsernameEmailAuthToAccount | 現在のアカウントに、認証に使用できるユーザー名、メールアドレス、パスワードを追加します。 |
LinkSocialProvider | 認証に使用できるソーシャルネットワークを現在のアカウントにリンクします。 |
デバイス管理
SDKメソッドの名称 | 説明 |
---|---|
GetUserDevices | 現在のユーザーアカウントにリンクされているデバイスのリストを返します。 |
LinkDeviceToAccount | 指定されたデバイスを現在のユーザーアカウントにリンクします。 |
UnlinkDeviceFromAccount | 指定されたデバイスを現在のユーザーアカウントからリンク解除します。 |
この記事は役に立ちましたか?
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。