使用auth0与Google Assistant关联的帐户

时间:2019-08-05 13:24:47

标签: android dialogflow google-oauth2 google-home google-assist-api

我已经集成了auth0以使用https://auth0.auth0.com/

在我的Google Assistant应用程序中对用户进行身份验证

帐户关联正常。在请求中将帐户链接到助手后,我收到了一个访问令牌,如下所示:

{
  "responseId": "............",
  "queryResult": {
    "queryText": "GOOGLE_ASSISTANT_WELCOME",
    "action": "input.welcome",
    "parameters": {

    },
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Hi! How are you doing?",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Hi! How are you doing?"
          ]
        }
      }
    ],
    "outputContexts": [
      .................
    ],
    "intent": {
      "name": "...........",
      "displayName": "Default Welcome Intent"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "user": {
        "accessToken": "w8S-ffdFLBCiddyxfsFxKPp3y4FJJoLD2",
        "locale": "en-US",
        "lastSeen": "2019-08-05T12:54:38Z",
        "userVerificationStatus": "VERIFIED"
      },
      "conversation": {
        "conversationId": "ABwppHHTjRvYEzK57U3fKGC-nomnMOTUL5l3rtt9rF2_kXxwV-UwKquki278m4FwcWdM0hQ-48zVZyhCvLw",
        "type": "NEW"
      },
      "inputs": [
        {
          "intent": "actions.intent.MAIN",
          "rawInputs": [
            {
              "inputType": "KEYBOARD",
              "query": "Talk to my device"
            }
          ]
        }
      ]
  "session": "projects/quizeapp-8a899/agent/sessions/ABwppHHTjRvYEzK57U3fKGC-nomnMOTUL5l3rtt9rF2_kXxwV-UwKquki278m4FwcWdM0hQ-48zVZyhCvLw"
}

有效载荷中只有一个访问令牌

"user": {
        "accessToken": "w8S-ffdFLBCiddyxfsFxKPp3y4FJJoLD2",
        "locale": "en-US",
        "lastSeen": "2019-08-05T12:54:38Z",
        "userVerificationStatus": "VERIFIED"
      }

我需要从此访问令牌中提取登录的用户电子邮件ID。

有人知道我该如何实现吗?

2 个答案:

答案 0 :(得分:0)

要从Auth0获取登录用户的信息,我们可以使用Auth0- https:// {YOUR_DOMAIN} / userinfo 提供的已定义端点。将域替换为您在Auth0设置中提到的域。 请参阅此link以获取更多信息。

答案 1 :(得分:0)

首先,您收到的访问令牌不是JWT令牌。这是一个不透明的令牌。

  

如果您从Auth0获得的访问令牌不是JWT,而是一个不透明的字符串(如kPoPMRYrCEoYO6s5),则表示访问令牌不是作为您的自定义API发出的。当为您的API请求令牌时,请确保在授权或令牌请求中使用受众参数,并将API标识符作为参数值。   https://auth0.com/docs/tokens/reference/access-token/access-token-formats

第二,访问令牌不包含电子邮件声明。但是您可以使用auth0规则在令牌中包含自定义声明。 https://auth0.com/docs/api-auth/tutorials/adoption/scope-custom-claims#custom-claims

但是,如果您要在范围内请求电子邮件,则应将其添加到ID TOKEN中。因此,可以通过调用/userinfo端点从前端或后端重试用户配置文件。