Alexaでアカウントリンクするときの注意点
はじめに
先日、Googleカレンダーの予定をAlexaのリマインダーに登録するアレクサスキル「リマインドカレンダー」を作りました。
リマインドカレンダー
Amazon.co.jp: リマインドカレンダー: Alexaスキル
リマインドカレンダーではアカウントリンクを使ってGoogleカレンダーと連携します。 この時の注意点、審査での指摘事項が幾つかあったので書いてみたいと思います。
GoogleのOAuth画面への直接リンクはNG
Googleカレンダーと連携する場合にはアカウントリンクの設定で「認証画面のURI」という項目があります。
これは、アカウントリンクで権限を付与する時に最初に表示される画面のことです。
Googleであればhttps://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
をURLとして指定します。
しかし、GoogleのOAuthの画面に直接リダイレクトすると審査で指摘されます。
Alexaユーザーとスキルの開発者が提供していないサービスを接続する場合、スキルを有効にした後に表示する最初のランディングページは、スキルのプロバイダーが所有するページにする必要があります。
Googleアカウントと連携する場合であっても自分が所有するページを挟む必要があるという事です。
つまりスキルページ => 所有するページ => Google OAuth画面
という流れにする必要があります。
この流れにした場合には、スキルページから渡されるパラメーターをGoogle OAuthの画面に引き渡す必要があります。 今回は次のような方法で、Javascriptでパラメーターを引き渡しました。
スキル有効時に表示される最初のランディングページは所有するページにする
これは少し分かりにくいですが審査で指摘された内容は次の通り。
スキルが、アカウントのリンクを使用して、Alexaユーザーとスキルの開発者が提供していないサービスを接続する場合、スキルを有効にした後に表示する最初のランディングページは、スキルのプロバイダーが所有するページにする必要があります。
これは、スキル開発者が提供していないサービスとアカウントリンクを行う場合には、スキル有効時に所有するページを最初に表示する必要があるようです。 これは、アカウントのリンクの設定だけで実現できます。
アカウントリンクなしでスキルを有効にすることをユーザーに許可します (推奨)。
をオフにしておくと、スキル有効時に設定したOAuthの確認画面にリダイレクトされます。
アカウントリンクが無効にされている時には権限カードを表示
アカウントリンクが許可されていない場合には、その旨をメッセージで発話してあげる必要があります。
また、アカウントリンクが許可されていない場合に.withLinkAccountCard()
で権限カードを表示してあげます。
これで、Alexaアプリにアカウントリンクを有効化する権限カードが表示されます。
権限カードを表示してあげるとAlexaアプリから簡単にアカウントリンクを有効化することができるようになります。
OAuthの画面にはスキル名を表示
審査の指摘事項は次の様に書かれていました。
申請されたスキルでは、アカウントリンク時に表示される「Googleにログイン」の画面において「Amazon.co.jp」の名称が不適切に使用されています。
これはOAuth画面の次の箇所がAmazon.co.jp
になっているのでスキル名にする必要があるということです。
Googleの場合には、ここをスキル名にするためにはアプリの審査に提出する必要があります。 Google Developer Consoleから該当のOAuth同意画面を開いて審査に提出しましょう。
実は、ここが一番時間がかかりました。 リマインドカレンダーは公開前のスキルです。Googleが審査を行うにはスキルを公開する必要があります。 しかし、スキルを公開するためにはGoogleのOAuth同意画面をスキル名に変更する必要があります。GAFAのGAに板挟み。。。
今回は、お問い合わせからAlexa審査チームとGoogle審査チームに状況を説明したり、動作している画面を動画で撮影したり、というのを何度か繰り返してなんとか審査を通すことができました。
まとめ
アカウントリンクの設定自体はそれほど難しくはありません。 しかし、他社のサービスとアカウントリンクする場合には色々と考慮するべきポイントがあるので気をつけましょう。
Let’s enjoy Alexa development.