我们正在尝试将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"
},
答案 0 :(得分:2)
如果您在向Webhook发出的请求中收到accessToken
,则这是OAuth2服务器应已发给Assistant的访问令牌,以便它可以代表您执行操作。据推测,您可以在身份验证系统中使用此令牌来识别用户的帐户,但是确切的方法由您自己决定,因为这取决于您使用的OAuth服务器。
但是,由于您要使用Google帐户,因此可以使用Google Sign in for Assistant大大简化操作。这将为您提供一个idToken
,在对其进行解码和验证时,将包括其Google ID,该ID应与您从其个人资料中获得的id
相匹配。