【初心者向け】AlexaカスタムスキルとCognitoをアカウントリンクで連携させる

#AlexaカスタムスキルとCognitoをアカウントリンクで連携させる
前の記事：[Cognitoで認証情報を保存するユーザープール作成](https://qiita.com/kurisaka/items/7235d058211367aaa96f)
##アカウントリンク設定

###ドメインの設定
Cognitoを表示して、左側のメニューより「ドメイン名」を押下
ドメインのプレフィックスに任意のドメインを入力　→このサンプルではalexa-sampleにしました
「変更を保存」を押下
![5-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/90a29893-b3be-c714-4134-bb39cf099d63.png)

###ドメイン名のコピー
ドメインのURLをコピーしておいてください
![5-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/fcacb901-44ed-92f0-c29f-2d6899324714.png)

###アカウントリンクの設定
alexaに戻り左側のメニューから「アカウントリンク」を押下
![5-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/f64cb732-ff5e-3eb1-1f11-fb9e7a8b2e4f.png)

###アカウントリンクの詳細設定

1.「ユーザーがアカウントや既存アカウントへのリンクを作成することを許可しますか？」をONにする
2.「アカウントリンクなしでスキルを有効にすることをユーザーに許可します (推奨)。」をOFFにする
3.「Auth Code Grant」を選択する
4. 「認証画面のURI」を以下フォーマットで設定する  

```
https://{Amazon Cognito ドメイン}/login?client_id={アプリクライアントID}&response_type=code&scope=aws.cognito.signin.user.admin&redirec
```

※{Amazon Cognito ドメイン}は[こちら](https://qiita.com/kurisaka/items/6404f49b4d5134ee8e74#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%90%8D%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC)で保存したドメインのURL
※{アプリクライアントID}は[こちら](https://qiita.com/kurisaka/items/7235d058211367aaa96f#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AE%E8%A9%B3%E7%B4%B0%E6%83%85%E5%A0%B1%E3%81%AE%E8%A1%A8%E7%A4%BA)で保存していた「アプリクライアントID」

5.「アクセストークのURI」を以下フォーマットで設定する  

```
https://{Amazon Cognito ドメイン}/oauth2/token  
※{Amazon Cognito ドメイン}は[こちら](https://qiita.com/kurisaka/items/6404f49b4d5134ee8e74#%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%90%8D%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC)で保存したドメインのURL 
```

6.「ユーザーのクライアントID」に[こちら](https://qiita.com/kurisaka/items/7235d058211367aaa96f#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AE%E8%A9%B3%E7%B4%B0%E6%83%85%E5%A0%B1%E3%81%AE%E8%A1%A8%E7%A4%BA)で保存していた「アプリクライアントID」を入力する
7.「ユーザーのシークレット」に[こちら](https://qiita.com/kurisaka/items/7235d058211367aaa96f#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AE%E8%A9%B3%E7%B4%B0%E6%83%85%E5%A0%B1%E3%81%AE%E8%A1%A8%E7%A4%BA)で保存していた「アプリクアライアントのシークレット」を入力する
8.Alexaのリダイレクト先のURLはコピーしておく  
9.最後に「保存」を押下
![5-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/5add281b-cceb-806f-8fe5-3b33ead5198b.png)

###保存の成功メッセージが表示される
![5-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/cc2b82a7-4617-1679-98d0-000610a96687.png)

###アプリクライアントの設定
Cognitoに戻り左側のメニューから「アプリクライアントの設定」を押下
![5-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/8523e50f-c018-ae6d-4131-b09d8b92b3aa.png)

###アプリクライアントの詳細設定
- 「Cognito User Pool」を選択  
- 「コールバックURL」は[こちら](https://qiita.com/kurisaka/items/6404f49b4d5134ee8e74#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E8%A9%B3%E7%B4%B0%E8%A8%AD%E5%AE%9A)の8でコピーしたAlexaのリダイレクト先のURLをカンマでつないで登録する
- 「サインアウトURL」は「https://alexa.amazon.co.jp」を入力
- 「許可されている OAuth フロー」で「Authorization code grant」を選択  
- 「許可されている OAuth スコープ」で「aws.cognito.signin.user.admin」  
- 「変更の保存」を押下
![5-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/92f992ee-9408-4e77-63fa-9184b1edc1eb.png)

###Cognitoの設定完了
「ホストされたUIを起動」のリンクが表示されれば登録は成功しています
![5-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/8011bbba-40d2-6b57-bcab-8dee9b45ec4e.png)

##Alexaの公開設定とアカウントリンク

###Alexa公開設定
alexaに戻り上部の「公開」メニューを押下
以下赤枠の部分を入力して最後に「保存して続行」を押下
![6-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/0c7ccba3-30d6-0f3c-8910-2daed6b0666f.png)

###プライバシーとコンプライアンス設定
赤枠を入力して最後に「保存して続行」を押下
![6-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/271308f9-3340-06f9-e8fa-4fe3e63e3c73.png)

###公開範囲設定
赤枠部分を設定する
![6-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/32f8a966-2ed9-ba4b-b6c2-588b96a7f4e0.png)

###ベータテスト設定
- 「ベータテスト管理者用Eメールアドレス」を設定
- 「テスターのEメールアドレス」を設定
- 「保存して続行」を押下
![6-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/524305d5-8c45-9bfa-2a35-fe29eb64a8c6.png)

###招待メールのリンクを押下
赤枠のリンクを押下する
![6-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/d5a35b57-20f7-41a9-8815-90b9419efc5a.png)

###「スキルテスト」を押下する
![6-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/77d26c5e-26c0-70ba-806b-f20a78134c82.png)

###「有効にする」を押下する
![6-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/96a41f1c-9fc9-71be-53ef-c3c8c743550d.png)

###Sign in画面が表示されたら、Sign upリンクを押下する
![6-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/8a2f3c6b-00c3-a6aa-7f96-b968040baf01.png)

###Sign up画面にアカウント情報を入力します
最後に「Sign up」を押下します
![6-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/5c99bbd9-8e50-7327-e230-2e7eec7403e2.png)

###設定したEmailにverification Codeが送られてきます
![6-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/e411921f-ec3b-f8c1-6a74-a2f77bf14dc3.png)

###表示された画面にverification Codeを入力して「Confirm Account」を押下します
![6-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/1219c674-e6d6-5cb5-7e60-49e5423870f6.png)

###アカウントリンク成功のメッセージが表示される
![6-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/99a51ec1-301a-554d-067d-ce04c0e3552c.png)

#動作確認

###iPhoneアプリから動作を確認
1.「サンプルスキルを開いて」と発話する
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/f452ecea-3253-712c-1dbc-676cacd9f36d.png)

2.「こんにちは」と発話する
![image0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/acaff364-9acc-f9fe-eade-daf038ef8bee.png)

###Cognitoの登録状況を確認
左側のメニューより「ユーザーとグループ」を押下
ユーザー名のリンクを押下
![7-2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/eebe6739-3d0f-b13a-7eac-49a82c5d3d39.png)

詳細情報が表示される
![7-2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163917/1602223a-c5c6-8e76-f436-b5e43f07e12c.png)


###関連記事
* [Alexaカスタムスキルを作成してCognitoのユーザープールとアカウントリンクする手順](https://qiita.com/kurisaka/items/8dda3fef0d1eb2662f05)
* [Alexaでカスタムスキルを作成する](https://qiita.com/kurisaka/items/24f5dfe54d718e33c1c2)
* [Cognitoで認証情報を保存するユーザープール作成](https://qiita.com/kurisaka/items/7235d058211367aaa96f)
* [AlexaとCognitoをアカウントリンクして認証情報をLambda関数で利用できるように修正](https://qiita.com/kurisaka/items/6404f49b4d5134ee8e74)