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": ""
}