スマートスピーカー

Alexaアカウントリンクの公式チュートリアルで詰まった点まとめ

Alexaアカウントリンクの公式チュートリアルで詰まった点まとめ

Alexaのアカウントリンクをやろうとして以下のページを見て練習していたのですが、

Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能

 

この通りやっても上手くいかなかった点がいくつかありましたので、備忘録がてら解決策をメモしていこうと思います。

まる太
まる太
このサイトは2017年の情報なので、アップデートしてほしいですね。。。

 

ちなみにアカウントリンクとは、OAuth2.0を用いて、他社サービスとAlexaスキルを連携して、 Alexaスキルが目的のWebサービスにアクセスすることを許可するよう設定する仕組みのことです。

以下はちょっと古い動画ですが、アカウントリンクとは何ぞや?というのが、この動画を見ればなんとなくわかります。Amazon Alexaの公式動画です。

第13回Alexa道場:アカウントリンクで既存のサービスと連携するスキルを作ろう

 

そしてこの動画では、Amazonアカウントとアカウントリンクをするサンプルデモの解説をしてくれています。

まる太
まる太
この通りやれば、実際にアカウントリンクが体験できますね!

 

・・・そう思ったのですが、最初のlamdbaの部分の導入が端折られていたので、どう書いていいか分からず、色々ググっているうちに、冒頭のページにたどり着きました。

私はlambdaも全くの初心者だったので、この記事が私と同じような初心者の方の参考になれば幸いです!

 

アカウントリンクを「Alexaスキル開発トレーニングシリーズ 第5回」の通りにやってみる

「alexa アカウントリンク oauth2.0」でググると、3番目にトレーニングのページが出てきました。

アカウントリンク1

アドレスがamazon.comなので、おそらく公式ページでしょう。

Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能

ここを開くと、丁寧な解説ページが出てきて、この通りにやれば実装できそうです。

冒頭で紹介した動画と併せて見ながらやってみます。

 

しかしちょっとここで気になったのが・・・

[2019.4.5]本トレーニングシリーズは一部の内容が古くなっておりますので、2019年作成のトレーニングシリーズをご覧ください。“と記載があります。

早速リンク先を探してみたのですが、アカウントリンクに関する新しいページが見当たりませんでした。

まる太
まる太
私の探し方が悪いのかな?

 

なので、このページのまま進めてみます。

 

チュートリアルの通り進めてみる

では実際にやってみます。このチュートリアルでは、Amazonのログイン画面でAmazonアカウントを入力すれば、ユーザの情報が取れるということができるみたいです。

OAuth 2に対応するWebサービスとしてLogin with Amazonと連携し、Amazonアカウントの氏名を取得するスキルを作成します。

ユーザー : 「アレクサ、リンクテストで名前を教えて」
Alexa : 「山田太郎(Amazonアカウントに登録している氏名)さん、こんにちは。」

このスキルを次のようなステップで作成します。

  1. Login with Amazonの設定
  2. スキルの作成と構成
  3. AWS Lambda関数の構成
  4. Alexaアプリのアカウントリンク設定
  5. 動作確認

引用元:Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能

 

まる太
まる太
なるほど、読んだ感じではできそうです。

 

まずは”ステップ1 Login with Amazonの設定”ですが、これは読んだままできました。

リンク先へ飛んで、ログインします。

Amazon開発者ポータル

Amazonのアカウントを持ってない場合は、まずアカウントを作りますが、絶対に上記のページから新規アカウントの作成はしないでください

Amazon.co.jp(ショッピングのページ)に行って、こちらでアカウントを新規作成してから、上記ページでログインします。

なぜこうするのかと言いますと、詳しくは以下のページで解説されているのですが

Alexa 開発者アカウント作成時のハマりどころ

要するに、

日本語のAlexaスキルを作るには日本のAmazonアカウント(Amazon.co.jp)が必要なのですが、上記リンク先のログイン画面でAmazonアカウントを新規作成すると、Amazon.co.jpではなくAmazon.comのアカウントが作られてしまうんです。

まる太
まる太
つまり、 Amazon.comのアカウントだとアメリカ向けのAlexaスキルを作ることになってしまうということですね。これは要注意です。

 

ログインしたらいきなり”Login with Amazon”があるので、それをクリックします。

アカウントリンク2

あとは手順の通りセキュリティプロファイルを作ります。

セキュリティプロファイル作成画面では、以下を入力します。

引用元:Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能

 

こんな感じで手順の通り入力します。

アカウントリンク3

そしてSaveすると、

アカウントリンク4

え???

何このエラー・・・エラーメッセージも意味不明です。

まる太
まる太
このエラーでググっても情報出てこないんだけどー???

 

詰まった点その1:「無効なセキュリティプロファイル」というエラーが発生

ここから色々試行錯誤が始まります。名前付けが悪いのかと思ってスペース抜いたり・・・そして・・・

アカウントリンク5

最終的に、「セキュリティプロファイル名」と「セキュリティプロファイルの説明」から「Alexa」を抜いてみました。すると・・・

アカウントリンク6

えええええー!

まる太
まる太
通りました。Alexaがあったらダメなんかい!

気を取り直して、ここからまたチュートリアルの手順通りに設定していきます。

ちなみに、ここの流れは冒頭で紹介したYoutubeの動画見たほうが分かりやすいです。16分あたりから見て、そのまま設定していけばOKです。

 

次は、AWSの設定です。

AWSのアカウントを持ってない人はまず作る必要があります。クレジットカードが必要なのでちょっと登録を躊躇しますが、1年間は利用が無償なので課金される心配はありませんよ。

作成の手順は以下の公式ページに丁寧に記載されていますので、こちらをご覧ください。

AWS アカウント作成の流れ

 

なお、AWSは不正にログインされて不正利用されると高額請求される恐れがあるので、二段階認証をしておきましょう。今のご時世どんな不正をされるか分からないので、できる限りの防御はしておいたほうが良いです。

AWSの二段階認証の仕方は以下の記事にまとめましたので参考にしてください。(二段階認証は今すぐにやらなくても、あとからでも大丈夫です。)

二要素認証アプリならAuthyがオススメ!AWSを例に解説します
二要素認証アプリならAuthyがオススメ!AWSを例に解説しますAWS(Amazon Web Service)などの有料課金サービスを使う側にとって、不正ログインによる使い込みはとても恐怖ですよね。そんなリスクを低減するために、ログイン時のセキュリティを高めることができる方法として二要素認証が挙げられます。今回はそんな二要素認証に便利なアプリ「Authy」の使い方を紹介しますのでぜひ参考にしてください。...

 

さて、トレーニングページに戻って、トレーニングページに記載の通りの手順でlambdaの設定をやっていきます。

アカウントリンク7

 

3. 「関数の作成」ボタンをクリックします。

4. 「一から作成」を選択し、[名前]に「AccountLinkingTestSkill」、[ランタイム]は「Node.js8.10」、[ロール]は「既存のロールを選択」のまま、[既存のロール]は第1回の実習で作成した「lambda_basic_execution」を選択します。次に[関数の作成]ボタンをクリックしLambda 関数を作成します。

引用元:Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能

 

んんんんん?既存のロールにlambda_basic_execution???

アカウントリンク8
まる太
まる太
そんなものないんですけど・・・?

 

詰まった点その2:[既存のロール]に「lambda_basic_execution」を選択しようとしても出てこない

“第1回の実習で作成した”と記載があるので、第1回の実習とやらを見てみたんですけどよく分からない。どうすればいいか書いてないんですよね・・・。

めっちゃ調べた結果、自分でロールを作らないといけないらしいです。(汗)

まずは「IAMコンソール」に移動して、「ロールの作成」から「lambda」を選びます。

アカウントリンク9

次に、アクセス権限ポリシーを選択するので、ここでようやく”lambda_basic_execution”とやらの出番です。検索窓でlambdaで検索し、「AWSLambdaBasicExecutionRole」にチェックを入れます。

アカウントリンク10

タグの設定はただの説明文の記載なので、省略してOKです。

アカウントリンク11

最後に、ロールに名前を付けて完了です。名前は何でもいいですよ。

アカウントリンク12

このように、ダッシュボードに今作ったロールが表示されていたらOKです。

アカウントリンク13

このロールを、先ほどのlambdaの設定画面から選択しましょう。

アカウントリンク14
まる太
まる太
やっと設定できました。

 

関数を作成すると、このような画面に移行します。

アカウントリンク15

 

あとはトレーニング記載の手順通りに淡々と進めていきます。

10. 「アカウントリンク」をクリックして、「ユーザーがアカウントや既存アカウントへのリンクを作成することを許可しますか?」、「ユーザーがアカウントリンクなしでスキルを有効にすることを許可してください」のスイッチをONにし、各入力フィールドに以下の情報を入力します。

引用元:Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能

 

ここの流れは冒頭のYoutube動画を見たほうが分かりやすいです。18分20秒あたりから見て、動画と同じように設定していきます。

ちなみに、設定するURIに関する情報は以下のドキュメントに記載されています。

認可コードグラント

 

ここまでで必要な設定は完了です。あとはAlexaアプリから動作確認します。

Alexaアプリを起動し、「有効なスキル」から今作った「AccountLinkTest」スキルを探します。

アレクサアプリ1

 

AccountLinkTestを選択すると、「アカウントリンク可能」と表示されているのが分かります。「設定」をタップしてスキルを有効化します。

アレクサアプリ2

 

「アカウントをリンク」を選択します。

アレクサアプリ3

 

Amazonのログイン画面が表示されますので、自分のAmazonアカウントを入力してログインします。

アレクサアプリ4 アレクサアプリ5 アレクサアプリ6

 

上記まで問題なく進めれば、アカウントリンク完了です。

アレクサアプリ7

 

スキルの設定画面で「リンク済み」になっていればアカウントリンク成功です。

アレクサアプリ8

 

あとはチュートリアルに記載の通りAlexaシミュレーターで試してもいいですし、実機で試してもいいので、「アレクサ、リンクテストを開いて、名前を教えて」と発話すればAmazonアカウントに登録された名前が返ってきますよ。

 

まる太
まる太
以上で、アカウントリンクのチュートリアルは完了です!

 

まとめ

今回は、「Alexaスキル開発トレーニングシリーズ 第5回 アカウントリンクとホームカード機能」を参考にAlexaのアカウントリンクをやろうとした際に、詰まった点とその解決策について記載しました。

まる太
まる太
どうでしょう?みなさんできましたでしょうか?

 

結局、私がハマったのは以下2点でした。

  • 「無効なセキュリティプロファイル」というエラーが出る
  • 「既定のロール」って何を設定すればいいのか分からない

この備忘録が誰かの助けになれば幸いです。

RELATED POST