首页 > 解决方案 > 如何使用后端服务器对 google home 用户进行身份验证?

问题描述

我们正在尝试将 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.0actions-on-google

解决方案


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

但是,由于您使用的是 Google 帐户,因此您可以使用Google 登录助手大大简化事情。这将为您提供一个idToken,当解码和验证时,它将包含他们的 Google ID,该 ID 应该与id您从他们的个人资料中获得的相匹配。


推荐阅读