如何通过后端服务器对Google Home用户进行身份验证?

时间:2018-10-15 15:28:50

标签: oauth-2.0 actions-on-google

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

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

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主页发布到网络挂钩

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

1 个答案:

答案 0 :(得分:2)

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

但是,由于您要使用Google帐户,因此可以使用Google Sign in for Assistant大大简化操作。这将为您提供一个idToken,在对其进行解码和验证时,将包括其Google ID,该ID应与您从其个人资料中获得的id相匹配。