Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

スキル申請時におけるアカウントリンク設定の注意点

More than 1 year has passed since last update.

Alexa で外部 API と連携するためには、アカウントリンクを利用する必要があります。

今日の新刊 というスキルを開発した際に、Google ドライブを利用するため、クラスメソッドさんが書かれている以下の記事を参考に実装し、申請したのですがリジェクトされてしまいました。

AlexaでGoogleとアカウントリンクしてみた

どこが問題か?

スキル有効時に最初に表示されるページが、Google の認証ページになってしまう点です。

申請がリジェクトされた際のコメントで以下のように言われました。

スキルが、アカウントのリンクを使用して、Alexaユーザーとスキルの開発者が提供していないサービスを接続する場合、スキルを有効にした後に表示する最初のランディングページは、スキルのプロバイダーが所有するページにする必要があります。アカウントリンクのすべての要件については、申請チェックリストのテストケース2.3を参照してください。

どう設定すれば良いのか?

alexa developer console でアカウントリンクを設定する際に 認証画面のURL を自身で管理するページにします。アカウントリンクを行う API の認証ページへはページ内にリンクを用意してユーザーのクリックにより遷移できるようにしておきます。

サンプル

用意するページのサンプルを記載しておきます。

oauth.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>アカウントリンク</title>
  </head>
  <body>
    <div>
      <a id="link" href="#">
        アカウントリンクを行う
      </a>
    </div>
    <script>
      function setLink() {
        var url = "https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force"
        var target = document.getElementById("link");
        var queryStr = window.location.search.slice(1);
        url += "&" + queryStr;
        target.href = url;
      }      
      setLink();
    </script>
  </body>
</html>

認証画面のURLにパブリックに配置した上記ファイルへの URL を記載しておくと、Alexa アプリでスキルを有効にした際、このページへリダイレクトされます。その際に、OAuth 認証に必要なパラメータが渡されてくるので、そのまま利用し、サードパーティへのリンクを生成します。

参考

snufkon
フリーエンジニア(Clojureでお仕事中)。 あしあとまっぷ: http://ashimap.com/ 2012年5月〜2013年2月に自転車で日本一周しました。 開発環境: Heroku, Clojure, JavaScript
http://snufkon.hatenablog.com/
abeja
「ディープラーニング」を活用し、多様な業界、シーンにおけるビジネスの効率化・自動化を促進するベンチャー企業です。
https://abejainc.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away