【问题标题】:Account Linking with google assistant with auth0使用 auth0 与 google 助手关联帐户
【发布时间】:2019-12-13 00:49:39
【问题描述】:

我已集成 auth0 以使用 https://auth0.auth0.com/ 在我的谷歌助手应用程序中验证用户

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

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

payload 中有一个访问令牌

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

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

有人知道我怎样才能做到这一点吗?

【问题讨论】:

  • 你检查过API EXPLORER吗?
  • 没有。我不知道那件事。你能告诉我那是什么吗?我该如何触发这个问题?
  • 你检查了吗?
  • 通过此 API http://{YOUR_AUTH0_DOMAIN}/userinfo 获取所有信息只是我们需要在标头中传递访问令牌:授权:Bearer accessToken 还将 JsonWebToken 签名算法更改为 HS256 并添加 openid 和配置文件范围---> 这对我有用,可以获取用户信息
  • 好的!太棒了...

标签: android dialogflow-es google-oauth google-home google-assist-api


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果您从 Auth0 获得的访问令牌不是 JWT,而是一个不透明的字符串(如 kPoPMRYrCEoYO6s5),这意味着访问令牌不是为您作为受众的自定义 API 颁发的。在为您的 API 请求令牌时,请确保在授权或令牌请求中使用 Audience 参数,并将 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 端点从前端或后端重试用户配置文件。

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      相关资源
      最近更新 更多