Implicit grantを設定する
Alexa Skills Kitは、カスタムスキルのアカウントリンクにImplicit grantをサポートします。このGrant種別は、スマートホームスキルなど、カスタムスキル以外のスキルには使用できません。
Implicit grantフローの概要
Alexaは、OAuth 2.0のアカウントリンクフローとImplicit grantを使用して、ユーザーのAmazonアカウントをシステムのアカウントにリンクします。このフローは、従来のアカウントリンクとアプリ間アカウントリンク(Alexaアプリから開始する場合)のどちらでも同じです。従来のアカウントリンクでは、Alexaは設定されたURIを使用してウェブサイトのログインページを開きます。アプリ間アカウントリンクでは、Alexaは設定されたURIを使用してアプリのログインページを開きます。アプリがデバイスにインストールされていない場合、フォールバックとしてWebサイトのURIが使用されます。
ユーザーは、スキルを有効にするとき、またはAlexaアプリのアカウントリンクカードからアカウントリンクプロセスを開始できます。ユーザーのアカウントリンク操作の詳細については、カスタムスキルのアカウントリンクを参照してください。
アカウントをリンクする
ユーザーアカウントをリンクするImplicit grantフローの手順は以下のとおりです。
-
ユーザーがAlexaアプリでスキルを有効にするか、またはアカウントリンクカードのリンクをタップすると、プロセスが開始されます。
-
Alexaアプリが、アカウントリンクを設定する際に指定した認証画面のURIを使用して、アプリ内にログインページを表示します。このログインページでは認可サーバーを使ってユーザーの認証を行います。
Alexaアプリが指定した認証画面のURIを呼び出すと、このURIにはクエリー文字列のパラメーターとして
state
、client_id
、response_type
、scope
、redirect_uri
が含まれます。 - ユーザーは認可サーバーの認証情報を使ってログインします。
- ユーザーが認証されると、認可サーバーがユーザーを一意に識別するアクセストークン(
access_token
)を生成します。 - 認可サーバーが指定された
redirect_uri
にユーザーをリダイレクトし、その際、URLフラグメントでstate
、access_token
、token_type
を渡します。 - AlexaサービスがAlexaユーザーの
access_token
を保存します。
ユーザーのAlexaアカウントはサービスのアカウントにリンクされ、スキルが使用できるようになりました。
以下の図は、ユーザーがAlexaアプリからアカウントをリンクした場合のアカウントリンクフローを示しています。Alexaは、上記の手順に沿って認可サーバーからアクセストークンを取得します。

スキルでアクセストークンを使用する
アカウントのリンク後、ユーザーがスキルに送信するすべてのリクエスト(IntentRequest
など)にはaccess_token
が含まれるようになります。スキルはこのトークンを使ってリソースサーバーから必要な情報を取得します。
以下の図は、ユーザーがスキルにリクエストを送信し、スキルがアクセストークンを使ってリソースサーバーから情報を取得するフローを表しています。

認証画面のURI
認証画面のURLはAlexa開発者コンソールのビルド>アカウントリンクページで設定し、認証画面のURIフィールドにURLを入力します。Alexaサービスは、URLのクエリ文字列を使用して認可サーバーにパラメーターを渡します。たとえば認証画面のURIがhttps://www.ridehailer.com/login
の場合、Alexaは次のパラメーターを送信します。
https://www.ridehailer.com/login?state=abc&client_id=unique-id&scope=order_car+basic_profile&response_type=token&redirect_uri=https%3A//pitangui.amazon.com/api/skill/link/M2AAAAAAAAAAAA
Alexaサービスは、認証画面のURIを開く際のクエリ文字列に以下のパラメーターを含めます。
パラメーター | 説明 |
---|---|
|
スキルのIDです。この値を使って、アカウントリンクを設定した複数のスキルを識別するなど、スキル固有の機能を提供できます。 |
|
サービスが認証したユーザーをリダイレクトする、Amazon固有のリダイレクト先のエンドポイント(リダイレクト先のURL)です。このパラメーターの値の候補は、開発者コンソールでスキルのアカウントリンクを設定する際にも表示されます。 |
|
認可サーバーによってユーザーが認証された場合に返す応答の種類です。Implicit grantの場合、 |
|
Alexaユーザーが必要とするアクセスを表すスコープのリスト(任意)です。これらのスコープは、スキルのアカウントリンクを設定する際に定義します。
|
|
アカウントリンクを使用してユーザーをトラッキングするために、Alexaサービスが内部的に使用する値です。 Alexaサービスは、認証画面のURIを介して認可サーバーに |
Alexaのリダイレクト先URL
Alexaアプリが使用するリダイレクト先のエンドポイントは、開発者コンソールのビルド>アカウントリンクページのAlexaのリダイレクト先のURLフィールドに表示されます。これらのエンドポイントは、ユーザーの認証後、ログインページからユーザーをリダイレクトする必要があるURLです。リストには、Alexaリージョンごとに1つ、複数のURLが表示されます。
Alexaアプリは、ユーザーがデバイスを登録した場所に基づいてリダイレクト先のURLを選択し、URLクエリ文字列のredirect_uri
クエリパラメーターに認証画面のURIを指定して渡します。認証後、認可サーバーはredirect_uri
を使用してユーザーをAlexaアプリに戻す必要があります。
たとえば、redirect_uri
パラメーターがhttps://pitangui.amazon.com/spa/skill/account-linking-status.html?vendorId=M2AAAAAAAAAAAA
の場合、ユーザーはログインページから以下のURLにリダイレクトされます。その後、認可サーバーはクエリ文字列にこのstate
パラメーターとaccess_token
パラメーターを指定して渡します。
https://pitangui.amazon.com/spa/skill/account-linking-status.html?vendorId=M2AAAAAAAAAAAA#state=xyz&access_token=2YotnFZFEjr1zCsicMWpAA&token_type=Bearer
通常、リダイレクト先のエンドポイントは、特に認可サーバーを所有していない場合でも認証画面のURIから呼び出すことができるよう、認可サーバーに登録します。スキルが複数のリージョンで機能するよう、ユーザーのリダイレクト先のURLに表示されるすべてのURIを登録してください。
登録方法は使用する認可サーバーによって異なります。たとえばLogin with Amazonでは、セキュリティプロファイルを設定してAllowed Return URLsフィールドに利用可能なリダイレクト先URLを指定する必要があります。
サーバーの要件については、OAuthプロバイダーのドキュメントを参照してください。
アクセストークン
Alexa開発者コンソールで認可サーバーのアクセストークンエンドポイントを設定するには、ビルド>アカウントリンクページのアクセストークンのURIフィールドに適切なURLを入力します。
ユーザーがアカウントをリンクすると、Alexaサービスはクライアント認証情報を含むPOST
リクエストをトークンURIに送信します。その後、認可サーバーは、ユーザーを一意に識別するアクセストークンを生成して返す必要があります。このトークンはリソースサーバーに固有で、セキュリティを考慮して作成されている必要があります。具体的には、ユーザーを識別する一方で、推測不可能である必要があります。
アクセストークンの要件については、アクセストークンURIの要件を参照してください。
次のコードは、Alexaからのアクセストークンリクエストの例です。
POST /auth/o2/token HTTP/1.1
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=implicit
&client_id=exampleId
&redirect_uri=https%3A//pitangui.amazon.com/api/skill/link/M3PCA6K3O9X0NW
アクセストークンの生成に成功すると、認可サーバーは次のような応答を送信します。
HTTP/1.1 200 OK
Content-Type: application/json;charset UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"Atza|EXAMPLEACCESSTOKEN123456...",
"token_type":"bearer",
"expires_in":3600
}
前提条件
Alexaスキルにおけるアカウントリンクの要件に記載されている要件を満たす認可サーバーがあることを確認します。
Implicit grantの設定手順
- Alexa開発者ポータルでImplicit grant用にスキルを設定します。詳細については、Alexa開発者ポータルでアカウントリンクを設定する手順を参照してください。
- アクセストークンを検証して使用するための処理をスキルコードに追加します。
- アカウントリンクフローをテストします。
ステップ1: アカウントリンクの設定
アカウントリンクは、Alexa開発者コンソールのビルド>アカウントリンクページで有効にすることができます。また、ASK CLIまたはアカウントリンクREST APIで設定することもできます。
アカウントリンク設定
設定で、スキルで使用できるアカウントリンクオプションを有効または無効にします。次のセクションのセキュリティプロバイダーオプションは、ここで有効にした設定に応じて表示されます。
以下の表は、アカウントリンクの設定に必要なフィールドの一覧です。
フィールド | 説明 |
---|---|
ユーザーがアカウントや既存アカウントへのリンクを作成することを許可しますか? |
カスタムスキルでアカウントリンクを有効にする場合、このオプションをオンにします。 スマートホームスキルとビデオスキルでは自動で選択されます。 |
アカウントリンクなしでスキルを有効にすることをユーザーに許可します(推奨) |
ユーザーがアカウントをリンクせずにスキルを有効にできるようにする場合、このオプションをオンにします。カスタムスキルでのみ選択できます。アカウントを必要とする機能だけでなくアカウントを必要としない機能も提供するスキルで役に立つオプションです。詳細については、ユーザーがアカウントをリンクせずにスキルを有効にするを参照してください。 このオプションはデフォルトではオンです。 |
ユーザーがユーザーアプリケーションやウェブサイトからアカウントをリンクできるようにします |
ユーザーがウェブサイトを使用して認証できるようにする場合、このオプションをオンにします。 |
モバイルアプリでのユーザー認証を可能にします |
アプリ間アカウントリンクを有効にして、ユーザーがモバイルアプリを使用して認証できるようにする場合、このオプションをオンにします。 |
ユーザーが音声を使用して自分のアカウントをスキルにリンクすることを許可する |
ユーザーが音声でAmazonアカウントをサービスのアカウントとリンクできるようにする場合、このオプションをオンにします。 |
セキュリティプロバイダー情報
セキュリティプロバイダー情報で、Authorization grant種別を選択し、以下に記載するセキュリティプロバイダー情報を設定します。ここに表示されるオプションは、設定セクションで有効にしたオプションによって変わります。サードパーティOAuthプロバイダーを使用する場合、そのプロバイダーのドキュメントを確認してフィールドに入力する値を判断してください。
フィールド | 説明 |
---|---|
Authorization Grant種別を選択 |
アクセストークン取得に使用するOAuth 2.0のAuthorization Grant種別です。Implicit Grantを選択します。 |
Web認証画面のURI |
ユーザーがサービスにサインインできるよう、ウェブサイトに認証画面を開くためのURI。ユーザーがアカウントリンクプロセスを開始すると、Alexaアプリはこのページを表示します。詳細については、認証画面のURIを参照してください。 サードパーティのOAuthプロバイダーを使用している場合は、認可リクエスト用に提供されているURIを確認してください。たとえばLogin with Amazon(LWA)の場合、認証画面のURIは |
iOSアプリの認証URI |
ユーザーがサービスにログインするための認証ページをiOSモバイルアプリで開くためのユニバーサルリンク。ユーザーがiOSモバイルアプリからアカウントリンクプロセスを開始すると、Alexaアプリはこのリンクを開きます。詳細については、認証画面のURIを参照してください。 |
Androidアプリの認証URI |
ユーザーがサービスにログインするための認証ページをAndroidモバイルアプリで開くためのアプリリンク。ユーザーがAndroidモバイルアプリからアカウントリンクプロセスを開始すると、Alexaアプリはこのリンクを開きます。詳細については、認証画面のURIを参照してください。 |
ユーザーのクライアントID |
認証をリクエストするユーザーを識別する一意の文字列です。この値は、 サードパーティOAuthプロバイダーを使用している場合、プロバイダーが想定しているクライアントIDを確認してください。たとえばLogin with Amazonの場合、このIDはLogin with Amazonのセキュリティプロファイルを作成するときに作成されます。 |
Scope |
他のサービスの権限のリスト(任意)です。リソースサーバーが異なるアクセススコープをサポートする場合、それらのスコープを指定します。最大15個まで指定できます。 ここに指定したすべてのスコープが、Alexaアプリが認証画面のURIを呼び出す際の サードパーティのOAuthプロバイダーを使用している場合、プロバイダーがサポートするスコープのセットから指定してください。たとえばLogin with Amazonの場合、 |
ドメインリスト |
認証画面のURIがデータを取得するドメインのリスト(任意)です。ログインページが他のドメインからコンテンツを取得する場合は、そのドメインをこのリストに指定します。 このフィールドは、認証画面のURI以外のドメインを使用する場合にのみ必要です。たとえば、認証画面のURIが |
Alexaのリダイレクト先のURL |
サービスでユーザーを認証した後にログインページからユーザーをリダイレクトする、Amazon提供のリダイレクト先エンドポイント。Alexaは、ログインページへのリクエストで使用する値を、認証画面のURIの |
ステップ2: スキルコードでのアクセストークンの使用
Implicit grantを設定したら、アクセストークンを検証して使用する処理をスキルコードに追加します。スキルはこのアクセストークンを使ってリソースサーバーからユーザー情報を取得できます。詳細については、次のページを参照してください。
ステップ3: アカウントリンクフローのテスト
アカウントリンクの設定を完了すると、アカウントリンクフローをテストできます。Alexaアプリでスキルを有効にし、アカウントリンクプロセスを開始します。サービスにログインしてAlexaアプリに戻ることを確認します。
アカウントリンクの実装を終了するには、受信するリクエストにアクセストークンがあるかどうかを確認して適切なアクションを実行するよう、スキルコードを更新します。また、ユーザーがアカウントリンクを有効にしなかった場合やキャンセルした場合に、応答でアカウントリンクカードを送信するコードも追加します。Alexaアプリに表示された場合、このカードには認証画面のURIへのリンクが表示されます。ユーザーはこのカードから直接アカウントリンクプロセスを開始できます。
詳細については、次のトピックを参照してください。
カスタムスキル: カスタムスキルコードでアクセストークンを検証して使用する
関連トピック
- クイックリファレンス: Alexaスキルにアカウントリンクを追加する
- カスタムスキルのアカウントリンク
- Alexaスキルにおけるアカウントリンクの概念
- OAuth 2.0認可フレームワーク(RFC 6749)
- OAuth.com
最終更新日: 2025 年 05 月 30 日