Как аутентифицировать домашнего пользователя Google с помощью внутреннего сервера? - PullRequest
0 голосов
/ 15 октября 2018

Мы пытаемся связать приложение Google Home с нашим внутренним сервером.На данный момент мы можем войти в приложение Google Home с помощью учетной записи Google и отправить токен доступа к нашему собственному API.Мы также можем войти в наши собственные сервисы с помощью учетной записи Google.Но как мы можем проверить, кто отправляет запросы от 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 на главную страницуwebhook

{  
 "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 голосов
/ 15 октября 2018

Если вы получаете accessToken в запросе к вашему веб-крюку, то это токен доступа, который ваш сервер OAuth2 должен был выдать помощнику, чтобы он мог действовать от вашего имени.Предположительно, вы использовали бы этот токен в своей системе аутентификации для идентификации учетной записи пользователя, но точный способ сделать это зависит от вас, поскольку он зависит от используемого вами сервера OAuth.

Поскольку выоднако при условии наличия учетной записи Google вы можете значительно упростить задачу, используя Google Sign for Assistant .Вместо этого вы получите idToken, который при декодировании и проверке будет включать их Google ID, который должен совпадать с id, полученным из их профиля.

...