認証

高度な設定については、ハウツーをご覧ください。

OAuth 2.0 認証をセットアップする方法

Notice
Loginライブラリを使用する場合は、このハウツーを参考してください。

OAuth 2.0 では、長持ちするトークンの代わりに、短命のトークンを使用しています(リフレッシュトークン)。リフレッシュトークンを使用することで、ユーザーはユーザー名とパスワードを再入力することなく、長期間アプリケーションに滞在することができます。これにより、ユーザー認証データが危険にさらされるリスクがなくなります。

認証用にOAuth 2.0を設定するには:

  • ユーザー名またはメールとパスワード経由
  • ソーシャルネットワーク経由

このオプションが有効な場合、ユーザー登録と認証は、Register new userおよびJWT auth by username and password APIコールを呼び出すことによって実行されます。Loginライブラリは、OAuth 2.0 認証のために、JWTトークン認証と同様の方法を提供します。

Note
この設定を有効にしても、アプリケーションでのユーザーの認証プロセスは変わりません。

OAuth 2.0 認証を設定するには:

  1. パブリッシャーアカウントでログインプロジェクトのOAuth 2.0認証をセットアップします。
  2. ライブラリを初期化します。

パブリッシャーアカウントでログインプロジェクトのOAuth 2.0認証を設定する

  1. パブリッシャーアカウントに移動します。
  2. ログインブロックで開くをクリックし、ログインプロジェクトに移動します。
  3. ログインプロジェクトブロックで、開くとセットアップをクリックします。
  4. 一般設定 > 認証に移動します。
  5. OAuth 2.0 認証ブロックで、接続するをクリックします。
  6. OAuth 2.0 リダイレクト URIを指定し、接続するをクリックします。
  7. クライアントIDをコピーして保存します。

ライブラリを初期化する

ライブラリを初期化するには、以下の行をAndroidプロジェクトのソースコードに追加し、以下のパラメータを指定します:

  • login-project-idパブリッシャーアカウント>ログイン設定>ログインIDにあるログインID
  • oauth2-client-id — パブリッシャーアカウントでOAuth 2.0を設定するときに受け取った。クライアントID

Copy
Full screen
Small screen
val loginConfig = LoginConfig.OauthBuilder()
                .setProjectId("login-project-id")
                .setOauthClientId("oauth2-client-id")
                .build()

XLogin.init(applicationContext, loginConfig)

更新トークンを操作するために、Loginライブラリには次のメソッドが実装されています:

  • XLogin.refreshToken — トークンを更新します。
  • XLogin.getToken — 現在のトークンを返します。
  • XLogin.isTokenExpired — トークンの有効期限が切れている場合、trueを返します。

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

独自のログインシステムの使い方

Notice
以下のライブラリを使用する場合は、このハウツーを参考してください:
  • Store
  • Payments
  • Inventory

Store、Payments、Inventoryの各ライブラリは、独自のログインシステムと統合できます。これを行うには、アプリケーションに決済ステーションアクセストークンによるユーザー認証を実装します。

独自の認証システムを使用する場合のエクソラサーバーとのやり取りの流れは:

  1. あなたのクライアントは、サーバーに認証リクエストを送信します。
  2. サーバーはユーザーを認証し、エクソラサーバーにリクエストを送信して決済ステーションアクセストークンを受け取ります。
  3. エクソラサーバーが決済ステーションアクセストークンを返す。
  4. サーバーは、決済ステーションアクセストークンをクライアントに渡します。
  5. SDKメソッドは、受け取った決済ステーションアクセストークンを認証トークンとして使用し、ゲーム内ストアを開設して、支払い、インベントリ管理を行います。

決済ステーションアクセストークンを取得する

Note
PlayFabまたはFirebaseの認証システムを使用している場合は、BaaSInsert用のエクソラ既製エクステンションを使用して決済ステーションアクセストークンを取得します。

アプリケーションのバックエンドで、HTTP POSTリクエストを使用して決済ステーションアクセストークンを取得するメソッドを実装します。

Xsolla APIは基本的なHTTP認証を使用します。リクエストにはAuthorization: Basic <your_authorization_basic_key>ヘッダーが必要で、<your_authorization_basic_key>はBase64規格に従ってエンコードされたmerchant_id:api_keyです。パラメータ値はパブリッシャーアカウントにあります:

  • merchant_idの場合、プロジェクト設定> ウェブフック>マーチャントIDセクションに移動します。
  • api_keyの場合、会社設定> APIキーセクションに移動します。

HTTPリクエスト:

Copy
Full screen
Small screen
POST https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token

トークンを取得するには、リクエストボディに以下のパラメータを渡します:

パラメータ種類説明文
settings
objectカスタムプロジェクト設定(オブジェクト)。
settings.project_id
integerゲームのエクソラID。パブリッシャーアカウントのプロジェクト名の横にあります。 必須。
user
objectユーザーの詳細(オブジェクト)。
user.id
object認証システムのユーザーID(オブジェクト)。
user.id.value
stringユーザーID。 必須。
user.email
objectユーザーのEメール(オブジェクト)。
user.email.value
stringユーザーのメールアドレス。RFC 822 で規定された書式を厳密に守らなければなりません。 必須。
user.name
objectユーザーのニックネームに関するデータを含むオブジェクト。 必須。
user.name.value
stringユーザーの画面名
user.steam_id
objectユーザーSteam ID(オブジェクト)。
user.steam_id.value
stringユーザーSteam ID。必須アプリケーションがSteamで公開されている場合。
user.playfab_id
objectユーザーPlayFab ID(オブジェクト)
user.playfab_id.value
stringユーザーPlayFab ID。必須アプリケーションがPlayFabサービスを使用してアイテムを付与する場合。

APIリファレンスのリクエストとレスポンスの例を参照してください。

Note
リクエストでは、上記リストのパラメータのみを使用してください。APIコールの他のパラメータ(custom_parameterspurchaseなど)は、認証トークンを受け取るためのものではありませんので、渡さないでください。

決済ステーションアクセストークンを使用する

決済ステーションアクセストークンを使って、ゲーム内ストアを開設して、支払い、インベントリ管理を行うには、XStore.initメソッドに渡します。

期限切れ後に新しい決済ステーションアクセストークンを受け取るためのロジックを実装します。ユーザーがアプリケーションに再度ログインする必要がないように、バックグランドモードで新しいトークンを取得することをお勧めします。

Note
ゲーム内ストアとインベントリを操作するときの決済ステーションアクセストークンの有効期間は、エクソラAPIを最後に呼び出してから1時間となります。決済ステーションアクセストークンの有効期限を変更するには、アカウントマネージャーに連絡してください。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

ソーシャルネットワーク経由でネイティブ認証を設定する方法

Notice
Loginライブラリを使用する場合は、このハウツーを参考してください。

ネイティブ認証は、ユーザーがモバイルデバイスに設定されたソーシャルネットワークアカウントを介してアプリケーションにログインすることを可能にします。

ユーザーが初めてログインすると、ソーシャルネットワーキングアプリケーションが起動し、ユーザー認証の許可を求めます。その後は、ユーザーが何もしなくても自動的に認証が行われます。

現在、SDKは以下のソーシャルネットワーク経由のネイティブ認証を実装しています:

  • Google
  • Facebook
  • WeChat
  • QQ

ネイティブ認証を設定するには:

  1. ソーシャルネットワークの開発者アカウントでアプリケーションの設定を行います:
    1. Facebookによる認証の場合:
      1. 登録して、新しいアプリケーションを作成します。
      2. Facebook開発者アカウントで、アプリケーションページを設定します。
    2. Googleによる認証の場合:Google API Consoleでプロジェクトを設定します。
    3. WeChatによる認証の場合:
      1. 登録して、新しいアプリケーションを作成します。
      2. 審査のためにアプリケーションを提出してください。
    4. QQによる認証の場合:
      1. 登録して、新しいアプリケーションを作成します。
      2. 審査のためにアプリケーションを提出してください。

  1. エクソラ側でソーシャルネットワークによる認証を設定します:
    1. FacebookとGoogleの場合は、パブリッシャーアカウントでソーシャルコネクションを設定します。
    2. WeChatとQQの場合は、あなたのアカウントマネージャーをお問い合わせてください。

  1. ソーシャルネットワークによる認証用ライブラリをインストールします。これを行うには、アプリケーションのbuild.gradleファイルを開き、依存関係セクションに次の行を追加します。ここで、<version_number>はライブラリの必要なバージョンです:
    • Facebookによる認証の場合:

Copy
Full screen
Small screen
implementation 'com.xsolla.android:login-facebook:<version_number>'

    • Googleによる認証の場合:

Copy
Full screen
Small screen
implementation 'com.xsolla.android:login-google:<version_number>'

    • WeChatによる認証の場合:

Copy
Full screen
Small screen
implementation 'com.xsolla.android:login-wechat:<version_number>'

    • Googleによる認証の場合:

Copy
Full screen
Small screen
implementation 'com.xsolla.android:login-qq:<version_number>'

  1. Loginライブラリを以下のパラメータで初期化します:
    • facebook_id — Facebook開発者アカウントのアプリID
    • google_id — Google API ConsoleからウェブアプリケーションのクライアントID
    • wechat_id — WeChat開発者アカウントのアプリID
    • qq_id — QQ開発者アカウントのアプリID

JWTでの認証時にライブラリを初期化する例:

Copy
Full screen
Small screen
val loginConfig = LoginConfig.JwtBuilder()
                .setProjectId("login-project-id")
                .setSocialConfig(XLogin.SocialConfig(
                     facebookAppId = "facebook_id",
                     googleServerId = "google_id",
                     wechatAppId = "wechat_id",
                     qqAppId = "qq_id"
                ))
                .build()

XLogin.init(applicationContext, loginConfig)

OAuth 2.0での認証時にライブラリを初期化する例:

Copy
Full screen
Small screen
val loginConfig = LoginConfig.OauthBuilder()
                .setProjectId("login-project-id")
                .setOauthClientId("oauth2-client-id")
                .setSocialConfig(XLogin.SocialConfig(
                     facebookAppId = "facebook_id",
                     googleServerId = "google_id",
                     wechatAppId = "wechat_id",
                     qqAppId = "qq_id"
                ))

                .build()

XLogin.init(applicationContext, loginConfig)

  1. WeChatによる認証の場合、アプリケーションコードを変更します:
    • WXEntryActivityクラスを<your_package_name>.wxapiパッケージに追加します。<your_package_name>はアプリケーションのパッケージ名:

Copy
Full screen
Small screen
package <your_package_name>.wxapi

import android.app.Activity
import android.os.Bundle
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.xsolla.android.login.social.LoginSocial

class WXEntryActivity : Activity(), IWXAPIEventHandler {

    private lateinit var iwxapi: IWXAPI

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        iwxapi = WXAPIFactory.createWXAPI(this, LoginSocial.wechatAppId, false)
        iwxapi.handleIntent(intent, this)
        finish()
    }

    override fun onReq(req: BaseReq?) {
    }

    override fun onResp(resp: BaseResp) {
        LoginSocial.wechatResult = resp
    }
}

    • AndroidManifest.xmlファイルに次の要素を追加します:

Copy
Full screen
Small screen
<activity
            android:name=".wxapi.WXEntryActivity"
            android:exported="true">

Facebook開発者アカウントでアプリケーションページをセットアップする

  1. Facebook開発者アカウントのプロジェクト設定に移動します。
  2. 設定>基本に移動します。
  3. プラットフォームを追加するをクリックし、Androidを選択します。
  4. Google Playのパッケージ名フィールドでのAndroidアプリケーションのパッケージ名を指定します。
  5. クラス名フィールドでのデフォルトのアクティビティの完全修飾クラス名を指定します。
  6. キーハッシュフィールドでハッシュキーを生成し、指定します。
  7. 変更を保存するをクリックします。

さらにネイティブ認証の設定を行うには、設定 > 基本セクションのプロジェクト設定にあるアプリIDアプリシークレットが必要です。

Google API Consoleでプロジェクトをセットアップする

  1. Google API Consoleに移動します。
  2. 新しいプロジェクトをクリックします。
  3. プロジェクト名場所を指定して保存するをクリックします。
  4. 作成したプロジェクトに移動してサイドメニューでのOAuth同意画面をクリックします。
  5. 外部オプションを選択して作成するをクリックします。
  6. 必要なパラメータを指定して、保存をクリックします。サイドメニューで
  7. 資格情報をクリックします。
  8. Androidアプリ用のOAuth 2.0クライアントを作成します:

    1. 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
    2. アプリケーションタイプフィールドでAndroidを指定します。
    3. 名称を指定します。
    4. パッケージ名フィールドであなたのAndroidアプリケーションのパッケージ名を指定します。
    5. SHA-keyを取得します。
    6. SHA-1証明書のフィンガープリントフィールドで前の手順で生成されたSHAキーを指定します。
    7. 作成するをクリックします。
    8. OKをクリックします。

  1. Webアプリケーション用のOAuth 2.0クライアントを作成します:
    1. 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
    2. アプリケーションタイプフィールドでウェブアプリケーションを指定します。
    3. 名称を指定します。
    4. 許可されたリダイレクトURIセクションでURIを追加するをクリックして、https://login.xsolla.com/api/social/oauth2/callback URIを指定します。
    5. 作成するクリックします。
    6. OKクリックします。

さらにネイティブ認証の設定を行うには、ウェブアプリケーションのクライアントIDの設定にあるクライアントIDクライアントシークレットが必要です。

エクソラパブリッシャーアカウントでログインプロジェクトのソーシャルコネクションを設定します

  1. パブリッシャーアカウントでプロジェクトを開きます。
  2. サイドメニューのログインをクリックし、ログインプロジェクト > ログインプロジェクト > ソーシャル接続に移動します。
  3. Facebook経由で認証を設定するには:

    1. Facebookパネルで編集するをクリックしてステータスを切断済みを変更します。
    2. アプリケーションIDフィールドでのFacebook開発者アカウントからアプリIDを指定します。
    3. アプリケーションシークレットフィールドでのFacebook開発者アカウントからアプリシークレットを指定します。
    4. 接続するをクリックします。

  1. Google経由で認証を設定するには:
    1. Googleパネルで編集するをクリックしてステータスを切断済みを変更します。
    2. アプリケーションIDフィールドでのGoogle API ConsoleからクライアントIDを指定します。
    3. アプリケーションシークレットフィールドでのGoogle API Consoleからクライアントシークレットを指定します。
    4. 接続するをクリックします。

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

トークン無効化の設定方法

Notice
Loginライブラリを使用する場合は、このハウツーを参考してください。

トークンの無効化により、アプリケーション内のユーザー認証データのセキュリティを向上させることができます。このオプションを有効にすると、ユーザーが認証を行うたびに無効になる古いトークンが新しいトークンに置き換わります。

Note
JWTトークンを使用する認証では、トークン無効化を設定することができます。OAuth 2.0認証の場合、トークン無効化はプロトコル自体が提供するものであり、別途設定する必要はありません。

Loginライブラリを利用する場合、with_logoutパラメータの値が1の場合、Auth by username and passwordAuth via social networkのAPIコールを呼び出すことで、既存のトークンの無効化と新しいトークンの生成を行います。

Androidプロジェクトでトークン無効化を使用するには、XLogin.loginXLogin.startSocialAuthおよびXLogin.finishSocialAuthメソッドでwithLogout = trueパラメータを渡す必要があります。

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

デバイスIDによるユーザー認証を実現する方法

Notice
Loginライブラリを使用する場合は、このハウツーを参考してください。

デバイスID認証は、ユーザーが登録データを入力することなく、モバイルデバイスでアプリケーションを使い始めることを可能にします。ユーザーが初めてデバイスIDを使ってアプリケーションにログインすると、新しいアカウントが自動的に作成され、ユーザー名やメールアドレスなどを入力する必要がありません。

Notice
デバイスIDで作成されたアカウントは、現在使用しているモバイルデバイスでのみアプリケーションを使用できます。Android端末を変更するとアクセスできなくなります。アプリケーションの進捗状況を保存したり、他の端末でアカウントを使用するには、ソーシャルネットワークをリンクするか、ユーザー名、電子メールアドレス、パスワードを入力してアカウントをアップグレードします。

デバイスIDを使用すると、バックグラウンドモードで1台または複数のモバイルデバイスにユーザー認証を実装することができます。この機能を利用するには、ユーザーはデバイスIDを既存のアカウントにリンクさせる必要があります。

デバイスIDは、プラットフォームによって生成され、モバイルデバイスにインストールされたアプリケーションが利用できます。SDKは、プラットフォームAPIを使用してID値を取得し、この値を使用してXsolla APIを使用してさまざまな機能を実行します。AndroidのデバイスIDは、android.provider.Settings.Secure.ANDROID_ID定数で渡されます。

本SDKでは、以下の機能に対応するメソッドを実装しています。

認証

SDKメソッドの名称説明
authenticateViaDeviceId
現在のデバイスIDを使って、ユーザーをアプリケーションに認証します。

アカウントアップグレード

SDKメソッドの名称説明
linkEmailPassword
現在のアカウントに、認証に使用できるユーザー名、メールアドレス、パスワードを追加します。
認証に使用できるソーシャルネットワークを現在のアカウントにリンクします。
Notice
リストされたメソッドは、任意の利用可能な方法で作成されたアカウントをアップグレードするために使用することができます(例:ソーシャルネットワークを使用したり、電子メールアドレスとパスワードを使用したり)。

デバイス管理

SDKメソッドの名称説明
getUsersDevices
現在のユーザーアカウントにリンクされているデバイスのリストを返します。
指定されたデバイスを現在のユーザーアカウントにリンクします。
指定されたデバイスを現在のユーザーアカウントからリンク解除します。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示
最終更新日: 2021年10月8日

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

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