Android用SDK / 認証
 ドキュメントに戻る

Android用SDK

  • Loginライブラリ

  • Storeライブラリ

  • Inventoryライブラリ

  • Paymentsライブラリ

  • Subscriptionsライブラリ

  • ハウツー

  • 認証

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

    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. セキュリティブロックに移動してOAuth 2.0セクションを選択します。
    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

    本SDKは、お客様独自の認証システムと統合することができます。そのためには、カスタムID(サーバーで生成したユーザーID)によるユーザー識別を実装し、ゲーム内ストアの開設、決済、インベントリ管理などを行います。

    独自の認証システムを使用する場合のエクソラサーバーとのインタラクションのフローは以下の通り:

    1. クライアントは、サーバーに認証リクエストを送信します。
    2. サーバーはユーザーを認証し、エクソラサーバーにユーザーJSONウェブトークン(JWT)を受け取るリクエストを送信し、カスタムIDを渡します。
    3. エクソラサーバーはユーザーJWTを返します。
    4. サーバーは、ユーザーJWTをクライアントに渡します。
    5. SDKメソッドでは、受け取ったユーザーJWTを認証トークンを代用として、ゲーム内ストアの開設、決済、インベントリ管理を行います。

    エクソラ製品で独自の認証システムを使用するには:

    1. パブリッシャーアカウントでサーバーOAuth 2.0クライアントをセットアップします。
    2. サーバーJWTの取得を実装します。
    3. ユーザーJWTの取得を実装します。
    4. ユーザーJWTを使用して、ゲーム内ストア、購入、インベントリを操作するロジックを実装します。

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

    サーバーOAuth 2.0クライアントをセットアップする

    1. パブリッシャーアカウントでプロジェクトを開き、ログインセクションに移動します。
    2. ログインプロジェクトのパネルでの構成するをクリックします。
    3. セキュリティブロックに移動してOAuth 2.0セクションに移動します。
    4. OAuth 2.0を追加するをクリックします。
    5. OAuth 2.0のリダイレクトURIを指定します。
    6. サーバー(サーバー・トゥ・サーバー接続)チェックボックスを入ります。
    7. 接続をクリックします。
    8. クライアントIDと秘密鍵をコピーして保存してください。

    サーバーJWTを取得する

    アプリケーションのバックエンドで、JWTを生成するAPIコールを使用してサーバーJWTを取得するメソッドを実装します。リクエストには、以下のパラメータを含める必要があります:

    Note
    サーバーJWTの有効期限は59分です。

    ユーザーJWTを取得する

    アプリケーションのバックエンドで、custom IDによる認証APIコールを使用してユーザーJWTを取得するメソッドを実装します。リクエストはX-Server-Authorization: <server_JWT>ヘッダーを含まなければなりません。ここで、<server_JWT>前のステップで取得したサーバーJWTです。

    Note
    ユーザーJWTの有効期限は24時間です。変更するには、アカウントマネージャに連絡するか、integration@xsolla.comにメールを送信してください。

    ユーザーJWTを使用する

    ユーザーJWTをXStore.initメソッドに渡しSDKメソッドを使用して、ゲーム内ストアを開き、支払いを行い、インベントリを管理します。

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

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

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

    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を押します。

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