web-dev-qa-db-ja.com

アレクサ、あなたのスキルをリンクできません

アカウントリンクを使用するカスタムスキルをAlexaで作成しています。 OAuth2 phpライブラリを使用して独自の認証サーバーを作成し、スキル構成で認証URLとトークンURLを構成しました。

Alexaモバイルアプリからアカウントをリンクしようとすると、「スキルをリンクできません」というエラーが表示されます。以下は私の仕事の進捗状況です。

  • Alexaアプリは私の認証URLを開くことができます。
  • リダイレクトURIを使用して認証コードを認証および提供できます。
  • Alexaは、以前に提供された認証コードを使用してアクセストークンを要求しています。
  • アクセストークンと更新トークンを使用して、認証コードと応答を検証できます。
  • Alexaはこのステップで私のスキルとリンクできません。 「スキルをリンクできません」と表示されます。

私はほぼ同じことについてフォーラムを調べましたが、問題が正確に何であるかを見つけることができませんでした。誰かがこの点で私を助けてくれませんか。

10
Arun

私も同じ問題に直面していました。私の場合のアクセストークンはメッセージの本文で送信されたため、「クライアント認証スキーム」に「リクエスト本文の資格情報」(デフォルトはHttp基本)を選択することで問題は解決しました。サーバーから認証トークンがどのように送信されるかを確認してください。

2
hungryspider

リダイレクトリンクが現在ある場合:

https://layla.Amazon.com/api/skill/link/xxxxxxxxxxxxxx?code=xxxxxxxxx&state=xxxxx

?#に変更する必要があります

例えば.

https://layla.Amazon.com/api/skill/link/xxxxxxxxxxxxxx#code=xxxxxxxxx&state=xxxxx

2
Jay Hewitt

私の場合、問題はクライアントシークレットにありました。GoogleDeveloperConsoleで、スキルリダイレクトURIを追加し、Alexaスキル認証付与タイプで指定したクライアントシークレットを再確認します。

0
Animesh Jain

これは、AlexaサービスがOAuthエンドポイントに投稿しているのはかなり不透明で文書化されていないため、疑問に思う人に役立つかもしれません。AlexaサービスへのリダイレクトはPOST定義されたOAuthエンドポイントへのリクエスト。投稿本文はJSONではなくx-www-form-urlencoded形式です。したがって、POSTは次のようになります。

POST /authentication/1/oauth HTTP/1.1 url.Values{} grant_type=authorization_code&code=XXXXXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https%253A%252F%252Fpitangui.Amazon.com%252Fapi%252Fskill%252Flink%252FM9BEOG3DM65SQ&client_id=XXXXXXXXXXXXXXXXXXXXXX

エンドポイントがこのデータを解析していないか、簡単にマーシャリングを解除できる形式を期待していない場合は、おそらく406応答で失敗しています。

0
Rob Carpenter

私の問題は、最後のAccessToken呼び出しにありました。 GETリクエストを使用していると想定していたので、関数でこれに対応するだけでした。実際にはアクセストークンを作成しています。つまり、POSTを使用しています。

投稿を使用してAccessTokenをJSON形式で返すように関数を更新した後、すべて正常に機能します。

0
Jordan Walsh