Google assistant でGoogleのアカウントの情報を取得する #dialogflow
Googleアカウントのログイン情報の取得
Google assistantのアプリケーションを開発していく上で、ユーザー情報を使いたくなる場面が出てくると思います。OAuth 2.0 Implicit Flowという方法を使ってGoogleアカウントの情報を取得することができるので、その手順を紹介したいと思います。
下準備 Dialogflow(旧API.AI)
Dialogflowで作成している方は左メニューのIntegrationsからGoogle Assistantを選択し、Sign in required for welcome intentにチェックを入れてください。この作業によりログインを必須にすることができます。
Oauth認証の準備
GCP Consoleに移動します。Google assistantでも使用している同じプロジェクトIDを選択します。APIとサービスというメニューを開きます。
Web client (auto created by Google Service)を選択します。
クライアントIDは後ほど使用するので、どこかに保管してください。
承認済リダイレクトURIに下記のURIを追加して保存してください
hogehogeは自分のプロジェクトIDに変えてください。
https://oauth-redirect.googleusercontent.com/r/hogehoge
Actions on Google Overviewの編集
Actions on Google OverviewのAccount linkingでOauth認証の設定を行います。Account linkingは最後の項目なので1~4の必須項目を入力する必要があります。Oauth認証を試すだけなので、深く考えずササッと入力しちゃいましょう。
Account linking
下記を参考に必要な項目を入力します。
- Grant type
- Implicitを選択
- クライアントID
- 先ほど保管したクライアントIDを入力
- Authorization URL
- Configure your client (optional)
- こちらを参考に好きなscopeを入れる
- URLのスタイルで入れるのは非推奨となりました
- Testing instructions
- とりあえず何か入力しておきましょう
全て入力が終えたらSaveしましょう
UserIDとAccessTokenの取得
いつも通りGoogle Assistantのシミュレーションを行いましょう。するとまだアカウントがリンクがされていないと言われます。
この時にシミュレーターの右のメニューからDEBUGタブを選択します。
{
"sharedDebugInfo": [
{
"debugInfo": "",
"name": "Account Linking Url"
}
]
}
debugInfoにあるURLにブラウザでアクセスするとこのような見覚えのあるページに飛ぶので、ログインをしましょう。
ログインが終わったらもう一度シミュレーションに戻りアプリを呼び出します。すると今度は普通に会話がスタートしました。
またDEBUGタブを選択します
userIdとaccessTokenが取ることが出来ました\(^o^)/
"user": {
"userId": "",
"accessToken": "",
"locale": "en-US"
}
詳細情報の取得
ブラウザで以下のURLにアクセスすると詳細を取得することが出来ます。
※hogehogeは取得したaccessTokenに置き換えます。
https://www.googleapis.com/oauth2/v1/userinfo?access_token=hogehoge
レスポンス例
{
"id": "",
"email": "",
"verified_email": true,
"name": "",
"given_name": "",
"family_name": "",
"link": "",
"picture": "",
"gender": ""
}
備考
Author And Source
この問題について(Google assistant でGoogleのアカウントの情報を取得する #dialogflow), 我々は、より多くの情報をここで見つけました https://qiita.com/flatfisher/items/1f39de99728d8717c73b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .