所以在我的应用程序成功Google Account linking后,我使用Android设备测试它没有任何问题 . 我使用了Dialogflow响应的“in conversation prompt " technique to request the user to authenticate to proceed further. In other words, I was successfully able to receive the " user”属性和有效的accessToken(以及其他信息) .

现在,我在Google Home设备上试用了它 . 该设备配置了我在Android移动设备上使用的相同电子邮件ID . 当我调用它时,G.Home成功加载了应用程序 . 但这里缺少的部分是用户属性中的accessToken(下面的JSON) . 我在上面的场景中假设了以下内容:

  • 由于我已经在Android移动设备上成功登录,下次我尝试在同一设备上调用该应用程序时,该应用程序不会提示“登录”,因为它已经具有accessToken(直到它是过期) . 由于我在G. Home设备上使用相同的gmail地址,我也应该获得相同的accessToken .

  • 只要使用相同的gmail地址,无论我使用哪种设备/表面对我自己进行身份验证,如果它尚未过期,我将始终获得accessToken .

整个Google帐户关联的设置/配置在我分享的上述链接中有详细说明 . 这是我分别在G. Home和Android设备上收到的JSON:

{
  "originalRequest": {
    "source": "google",
    "version": "2",
    "data": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "continue",
              "inputType": "VOICE"
            }
          ],
          "arguments": [
            {
              "rawText": "continue",
              "textValue": "continue",
              "name": "text"
            }
          ],
          "intent": "actions.intent.TEXT"
        }
      ],
      "user": {
        "lastSeen": "2018-07-17T10:33:57Z",
        "locale": "en-US",
        "userId": "15229245xxx"
      },
      "conversation": {
        "conversationId": "153182806xxx",
        "type": "ACTIVE",
        "conversationToken": "[\"disclaimer_option\"]"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            }
          ]
        }
      ]
    }
  },
  "id": "9459d297-4746-4ffe-99fa-xxx",
  "timestamp": "2018-07-17T11:49:02.693Z",
  "lang": "en-us",
  "result": {
    "source": "agent",
    "resolvedQuery": "continue",
    "speech": "",
    "action": "v00.authentication.pin",
    "actionIncomplete": false,
    "parameters": {
      "CallEnum": "Login"
    },
    "contexts": [
      {
        "name": "disclaimer_option",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "pin",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 1
      },
      {
        "name": "google_assistant_input_type_voice",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "actions_capability_audio_output",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "actions_capability_media_response_audio",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      }
    ],
    "metadata": {
      "intentName": "v00.authentication.pin",
      "isResponseToSlotfilling": false,
      "intentId": "146f0d7d-0194-43cb-90e4-xxx",
      "webhookUsed": "true",
      "webhookForSlotFillingUsed": "false",
      "nluResponseTime": 87
    },
    "fulfillment": {
      "speech": "",
      "messages": []
    },
    "score": 1
  },
  "status": {
    "code": 200,
    "errorType": "success"
  },
  "sessionId": "15318280xxx"
}

{
  "originalRequest": {
    "source": "google",
    "version": "2",
    "data": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "Continue",
              "inputType": "TOUCH"
            }
          ],
          "arguments": [
            {
              "rawText": "Continue",
              "textValue": "Continue",
              "name": "text"
            }
          ],
          "intent": "actions.intent.TEXT"
        }
      ],
      "user": {
        "lastSeen": "2018-07-17T09:44:08Z",
        "accessToken": "6IlPNz0YFb_stP0quM1xxx",
        "locale": "en-US",
        "userId": "15229245xxx"
      },
      "conversation": {
        "conversationId": "153182082xxx",
        "type": "ACTIVE",
        "conversationToken": "[\"disclaimer_option\"]"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.WEB_BROWSER"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "id": "ae2e3ff8-f351-497b-9429-xxx",
  "timestamp": "2018-07-17T09:47:54.999Z",
  "lang": "en-us",
  "result": {
    "source": "agent",
    "resolvedQuery": "Continue",
    "speech": "",
    "action": "v00.authentication.pin",
    "actionIncomplete": false,
    "parameters": {
      "CallEnum": "Login"
    },
    "contexts": [
      {
        "name": "google_assistant_input_type_touch",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "pin",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 1
      },
      {
        "name": "disclaimer_option",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "actions_capability_screen_output",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "actions_capability_audio_output",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "actions_capability_media_response_audio",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      },
      {
        "name": "actions_capability_web_browser",
        "parameters": {
          "CallEnum": "Login",
          "CallEnum.original": ""
        },
        "lifespan": 0
      }
    ],
    "metadata": {
      "intentName": "v00.authentication.pin",
      "isResponseToSlotfilling": false,
      "intentId": "146f0d7d-0194-43cb-90e4-xxx",
      "webhookUsed": "true",
      "webhookForSlotFillingUsed": "false",
      "nluResponseTime": 87
    },
    "fulfillment": {
      "speech": "",
      "messages": []
    },
    "score": 1
  },
  "status": {
    "code": 200,
    "errorType": "success"
  },
  "sessionId": "153182082xxx"
}

我的问题是,当我使用Google Home设备时,我在哪里可以获得 accessToken