【问题标题】:How to authenticate a google home user with the back-end server?如何使用后端服务器对 google home 用户进行身份验证?
【发布时间】:2018-10-15 15:28:50
【问题描述】:

我们正在尝试将 google home 应用与我们的后端服务器相关联。目前我们可以使用 google 帐户登录 google home 应用并将访问令牌发送到我们自己的 api。我们也可以使用谷歌帐户登录我们自己的服务。但是我们如何才能验证是谁从 google home 发送请求以连接两个帐户。

谷歌登录从我们的服务器收到的信息。

object(Google_Service_Oauth2_Userinfoplus)#48 (14) {
  ["internal_gapi_mappings":protected]=>array(3) {
    ["familyName"]=>string(11) "family_name"
    ["givenName"]=>string(10) "given_name"
    ["verifiedEmail"]=>string(14) "verified_email"
  }
  ["email"]=>NULL
  ["familyName"]=>string(6) "familyname"
  ["gender"]=>string(4) "male"
  ["givenName"]=>string(7) "givenname"
  ["hd"]=>NULL
  ["id"]=>string(21) "XXXXXXXXXXXXXXXXXX"
  ["link"]=>string(45) "https://plus.google.com/XXXXXXXXXXXXXXXXXXXX"
  ["locale"]=>string(2) "nl"
  ["name"]=>string(14) "firstname lastname"
  ["picture"]=>string(92) ""
  ["verifiedEmail"]=>NULL
  ["modelData":protected]=>array(2) {
    ["given_name"]=>string(7) ""
    ["family_name"]=>string(6) ""
  }
  ["processed":protected]=>array(0) {
  }
}
array(6) {
  ["access_token"]=>string(140) "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  ["expires_in"]=>int(3599)
  ["scope"]=>string(206) "https://www.googleapis.com/auth/userinfo.profile
    https://www.googleapis.com/auth/plus.profile.language.read
    https://www.googleapis.com/auth/plus.me
    https://www.googleapis.com/auth/plus.profile.agerange.read"
  ["token_type"]=>string(6) "Bearer"
  ["id_token"]=>string(1085) "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  ["created"]=>int(1534615815)
}

从 google home 向 webhook 发布请求

{  
 "user":{  
  "userId":"XXXXXXXXXXXXXXXXXXXXXXXX",
  "accessToken":"XXXXXXXXXXXXXXXXXXXXXXXXX",
  "locale":"nl-NL",
  "lastSeen":"2018-10-15T14:17:23Z",
  "userStorage":"{\"data\":{}}"
  },
  "conversation":{  
  "conversationId":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "type":"ACTIVE",
  "conversationToken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},

【问题讨论】:

    标签: oauth-2.0 actions-on-google


    【解决方案1】:

    如果您在对 webhook 的请求中收到 accessToken,那么这是您的 OAuth2 服务器应该已向 Assistant 发出的访问令牌,以便它可以代表您执行操作。您可能会在您的身份验证系统中使用此令牌来识别用户的帐户,但这样做的确切方法取决于您,因为它取决于您使用的 OAuth 服务器。

    不过,由于您使用的是 Google 帐户,因此您可以使用 Google Sign in for Assistant 大大简化操作。这将为您提供一个 idToken,而不是在解码和验证后,将包含他们的 Google ID,该 ID 应该与您从他们的个人资料中获得的 id 匹配。

    【讨论】:

    • 我还有一个关于 user_id 的问题。 user_id 是否始终相同,我们可以将其用作对用户进行身份验证的参考吗?
    • 这听起来像是一个不同的问题,我建议将其作为一个新的 StackOverflow 问题提出(具体说明您正在谈论的是哪个“user_id”)。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多