as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

@amazon-devices/keplerscript-identity-lwa-lib

@amazon-devices/keplerscript-identity-lwa-lib

Kepler Login with Amazon(LWA)APIは、Amazon.comのユーザー認証システムを活用して、ユーザーの情報を保護できるようにする機能を提供します。LWAをKeplerアプリに追加する前に、アプリをLWAに登録する必要があります。

LWAの概要としくみの詳細については、Login with Amazonに関するドキュメントを参照してください。

前提条件

以下のリストは、LWAをKeplerアプリに追加する前に必要な項目を示しています。

  • コンピューターにインストールされたKepler SDK
  • Amazon開発者アカウント
  • 既存のKeplerアプリ。Vegaビデオサンプルアプリをダウンロードして、アプリのテンプレートとして使用できます。
  • アプリはLogin with Amazonに登録しておく必要があります。詳細については、Login with Amazonに登録するを参照してください。
  • アプリのAPIキー。詳細については、APIキーの取得を参照してください。
  • Kepler対応のFire TV Stick。LWAはKepler仮想デバイスに対応していないため、デバイス上で統合をテストする必要があります。

APIキーの取得

アプリでLWAを使用するには、アプリのAPIキーを提供する必要があります。APIキーは、Amazon Authorization Managerによって使用される識別子で、これによりLWA認証サービスを通じたアプリの識別が行われます。デバッグアプリと実稼働アプリには異なるAPIキーが必要です。APIキーは、アプリパッケージIDとアプリのMD5署名およびSHA256署名を使用して生成します。アプリのデバッグ版と実稼働版のパッケージIDは同じですが、MD5署名とSHA256署名を取得する手順は異なります。デバッグアプリの署名を取得するには、デバッグアプリのMD5署名とSHA256署名を参照してください。実稼働アプリについては、実稼働アプリのMD5署名とSHA256署名を参照してください。

以下の手順に従ってAPIキーを作成し、LWAアカウントに追加します。

  1. Amazonアプリストア開発者コンソールを開き、アカウントにログインします。
  2. セキュリティプロファイルを作成するか、既存のセキュリティプロファイルを開きます。詳細については、LWAのドキュメントを参照してください。
  3. Keplerアプリ用のAPIキーを追加します。
    1. [Android/Kindleの設定] を選択します。
    2. [Add an API Key] に移動します。次の情報を入力します。

      • [APIキー名] - アプリを識別するための名前を作成します。
      • [パッケージ] - パッケージID(com.mycompany.myappなど)を入力します。
      • [MD5署名] - MD5署名を入力します。
      • [SHA256署名] - SHA256署名を入力します。

デバッグアプリのMD5署名とSHA256署名

  1. Fire TV Stickを開発用コンピューターに接続します。
    1. ターミナルシェルを開き、vda devicesコマンドを実行します。
    2. デバイスのシリアル番号が出力に表示されていることを確認します。

      クリップボードにコピーしました。

       vda devices
       List of devices attached
       G4N33M33333333TA    device
      
  2. ターミナルで、vpm info <パッケージ名>を実行します。<パッケージ名>をアプリのパッケージ名に置き換えます。パッケージ名はmanifest.tomlファイルで確認できます。

    クリップボードにコピーしました。

     [package]
     id = "com.amazon.identity.lwa.authorizationmanager.service" ==> package_name
    
  3. 署名情報を特定します。
    1. コマンド出力で "Signers info" セクションを見つけます。

    2. いずれかの署名者のMD5署名とSHA256署名の両方を書き留めます。SHA256署名は、出力で2行にわたって表示されます。これらの行を:で接続します。たとえば、SHA256の出力が次のようになっているとします。

      クリップボードにコピーしました。

       17:6c:1b:d5:24:d6:0d:6c:e7:88:fd:9c:61:09:c2:01
       b2:21:2a:79:66:10:c8:a7:74:64:11:d0:13:39:31
      

      SHA256の正しい文字列は次のとおりです。

      17:6c:1b:d5:24:d6:0d:6c:e7:88:fd:9c:61:09:c2:01:b2:21:2a:79:66:10:c8:a7:74:64:11:d0:13:39:31

実稼働アプリのMD5署名とSHA256署名

アプリのリリース版、つまり「実稼働」版の場合は、AmazonアプリストアのMD5署名およびSHA256署名を使用して追加のAPIキーを作成し、アプリのmanifest.tomlファイルに保存する必要があります。これはアプリ内課金(IAP)やライブアプリテスト(LAT)を使用するアプリの場合も行う必要があります。

既存のアプリのAPIキーを作成するには、開発者コンソールでAmazonアプリストアの証明書ハッシュ値を確認します。[マイアプリ] に移動してアプリの現在のバージョンを選択し、[アプリファイルをアップロード] > [Amazonアプリストアの証明書ハッシュ] の順にクリックします。

APIキーからのclientIDの抽出

APIキーはJWT(JSON Web Token)です。このキーをデコードして、バックエンドサービスで使用されるclientIDを見つけることができます。

任意のJWTデコードツールを使用してAPIキーをデコードします。

セットアップ

  1. package.jsonファイルのdependenciesセクションに、以下のライブラリ依存関係を追加します。

    クリップボードにコピーしました。

     "dependencies": {
       "@amazon-devices/keplerscript-identity-lwa-lib": "~0.0"
     }
    
  2. manifest.tomlに以下の権限を追加し、api_keyを、取得済みのAPIキーに置き換えます。

    クリップボードにコピーしました。

     [wants]
     [[wants.service]]
     id = "com.amazon.identity.lwa.authorizationmanager.service"
    
     [[extras]]
     key = "api_key"
     value = "xyz"
    

IAPまたはLATを使用するアプリには、APIキーに関する個別の要件があります。詳細については、上記の実稼働アプリのセクションを参照してください。

使用方法

例: ユーザーを認可する

以下のコード例は、Authorize呼び出しをReact Nativeコンポーネントに統合してユーザー認可フローを開始し、アクセストークンとユーザーの詳細を取得する方法を示しています。

クリップボードにコピーしました。

import {
  AuthorizationManager,
  AuthorizeCallbacks,
  AuthorizeCancellationReason,
  AuthorizeSuccessParams,
  GrantTypeName,
  ScopeName
} from '@amazon-devices/keplerscript-identity-lwa-lib';

/**
 * 認可プロセスの結果を処理するコールバック関数を定義します。
 */
const authorizeCallbacks: AuthorizeCallbacks = {
  // 認可が成功すると呼び出されます
  authorizeSuccess: (authParams) => {
    console.log('Authorization successful:', authParams);
    // 成功時のレスポンスを処理します。
  },

  // エラーにより認可が失敗したときに呼び出されます
  authorizeFailure: (error) => {
    console.error('Authorization failed:', error);
    // 失敗のシナリオを処理します。
  },

  // ユーザーまたはシステムが認可を取り消したときに呼び出されます
  authorizeCancel: (cancelReason) => {
    console.log('Authorization cancelled:', cancelReason);
    // キャンセルを処理します。
  }
};

// 手順1: 認可リクエストのパラメーターを定義します。
const authorizeRequest: AuthorizeRequest = {
  scopes: [
    { name: ScopeName.PROFILE },         // ユーザーのプロファイル情報をリクエストします
    { name: ScopeName.POSTAL_CODE }      // ユーザーの郵便番号をリクエストします。
  ],

  // オプション: PKCEで認可コードフローを実行する場合にのみ使用します
  // PKCE(Proof Key for Code Exchange)は、パブリッククライアントのセキュリティを向上させます。
  // 例:「AUTH_CODE」または「ACCESS_TOKEN」
  // 指定しない場合、デフォルトで「ACCESS_TOKEN」になります。
  grantType: GrantTypeName.ACCESS_TOKEN,
  codeChallenge: 'your-code-challenge',           // <-- 実際のPKCEコードチャレンジに置き換えてください
  codeChallengeMethod: 'your-code-challenge-method' // 例:SHA-256の場合はS256、またはプレーン。
};

// 手順2: 認可リクエストをトリガーします
AuthorizationManager.authorize(
  authorizeRequest,
  authorizeCallbacks
);

例: 認可トークンを取得する

以下のコード例は、GetToken呼び出しをReact Nativeコンポーネントに統合して、指定されたスコープの認可トークンを取得する方法を示しています。

クリップボードにコピーしました。

import {
  AuthorizationManager,
  GetTokenCallbacks,
} from '@amazon-devices/keplerscript-identity-lwa-lib';

// getToken操作の結果を処理するコールバック関数を定義します。
const getTokenCallbacks: GetTokenCallbacks = {
  // トークンの取得に成功すると、この関数が呼び出されます。
  getTokenSuccess: function (access_token: any): void {
    console.log('getTokenSuccess', JSON.stringify(access_token));
    // APIリクエストの認証や安全な保存など、受信したトークンを使用するロジックをここに配置します。
  },
  // トークンの取得プロセス中にエラーが発生した場合、この関数が呼び出されます。
  getTokenFailure: function (category: any): void {
    console.log('getTokenFailure', JSON.stringify(category));
    // エラーメッセージの表示や操作の再試行など、トークン取得の失敗を処理するロジックをここに追加します。
  },
};

// トークンの取得プロセスを開始するには、AuthorizationManagerからgetTokenメソッドを呼び出します。
// このメソッドは、上記で定義したコールバック関数を使用して成功と失敗の結果を管理します。
AuthorizationManager.getToken(getTokenCallbacks);

例: ユーザーの詳細を取得する

以下のコード例は、GetUser呼び出しをReact Nativeコンポーネントに統合し、ユーザープロフィール情報を取得して表示する方法を示しています。

クリップボードにコピーしました。

import {
  AuthorizationManager,
  GetUserCallbacks,
} from '@amazon-devices/keplerscript-identity-lwa-lib';

// getUser操作の結果を処理するコールバック関数を定義します。
const getUserCallbacks: GetUserCallbacks = {
  // ユーザー情報の取得に成功すると、この関数が実行されます。
  getUserSuccess: (userInfo) => {
    console.log('User info retrieved:', userInfo);
    // UIでの表示やセッション管理のための保存など、ユーザー情報を処理するためのロジックを追加します。
  },
  // ユーザー情報の取得中にエラーが発生した場合、この関数が呼び出されます。
  getUserFailure: (error) => {
    console.error('Failed to retrieve user info:', error);
    // エラーメッセージを表示するか、適切な修正アクションを実行して、ユーザーによる取得の失敗を処理します。
  },
};

// AuthorizationManagerからgetUserメソッドを呼び出して、ユーザープロファイルの取得プロセスをトリガーします。
// このメソッドは、上記で定義したコールバック関数を使用して、成功と失敗の結果を処理します。
AuthorizationManager.getUser(getUserCallbacks);

例: ユーザーをサインアウトする

以下のコード例は、Signout呼び出しをReact Nativeコンポーネントに統合して、ユーザーが自分のアカウントから安全にサインアウトできるようにする方法を示しています。

クリップボードにコピーしました。

import {
  AuthorizationManager,
  SignOutCallbacks,
} from '@amazon-devices/keplerscript-identity-lwa-lib';

// サインアウトプロセスの結果を処理するコールバック関数を定義します。
// これらの関数は、サインアウト操作が完了すると呼び出されます。
const signOutCallbacks: SignOutCallbacks = {
  // サインアウトが成功すると、この関数が実行されます。
  signOutSuccess: () => {
    console.log('Sign out successful');
    // ユーザーのリダイレクトやセッションデータの消去など、サインアウト後のアクションを処理する追加のロジックをここに配置します。
  },
  // サインアウトに失敗すると、この関数が実行されます。
  signOutFailure: (error) => {
    console.error('Sign out failed:', error);
    // ユーザーにエラーメッセージを表示したり、操作を再試行したりするなどのエラー処理ロジックをここに含めます。
  },
};

// サインアウトプロセスをトリガーするには、AuthorizationManager からsignOutメソッドを呼び出します。
// このメソッドは上で定義したコールバック関数を使用します。
AuthorizationManager.signOut(signOutCallbacks);

モジュール


Last updated: 2025年10月3日