Как избавиться от Google Plus в PHP-системе oAuth - PullRequest
0 голосов
/ 10 марта 2019

Поддержка Google Plus для Google PHP Client скоро будет прекращена.Мне нужны некоторые альтернативы для следующих строк кода, но я не смог найти никаких замен.

Во-первых, области действия: области действия Google Plus устаревают и будут создаватьошибки скоро.Я смог найти следующие области в https://developers.google.com/identity/protocols/googlescopes#oauth2v2 enter image description here

Возможно, решение идет с OpenID, но я не знаю точно, как интегрироватьсфера в PHP.Мои текущие настройки области видимости следующие:

$client->setScopes(array(Google_Service_Plus::PLUS_ME, Google_Service_Plus::USERINFO_EMAIL, Google_Service_Plus::USERINFO_PROFILE));

Во-вторых, Мне нужно получить информацию о профиле после проверки токена ответа, однако единственная функция, которую я знаю, кроме OpenIDФункция полезной нагрузки:

$plus = new Google_Service_Plus($client); // starts google profile (plus) service
$me = $plus->people->get('me'); // saves account info

Итак, последний вопрос: могу ли я получить ответ OpenID id_token от системы Google oAuth для Google PHP Client?И если да, как я могу объявить область и получить id_token?


В качестве напоминания : для получения информации о профиле и OpenID id_token,Вы должны выполнить следующую строку кода, которая предоставит большую часть информации профиля, которую предлагал Google Plus.

$payload = $client->verifyIdToken($id_token);

1 Ответ

0 голосов
/ 10 марта 2019

Для установки областей действия:

$client->setScopes("email","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile");

Получение информации о пользователе

$oauth2 = new Google_Service_Oauth2($client);
$userInfo = $oauth2->userinfo->get();
$email = $userInfo["email"];
$name = $userInfo["givenName"];
$surname = $userInfo["familyName"];
$pic = $userInfo["picture"];

//$client->revokeToken();

Вы также можете передать токен id, если вы хотите использовать эту систему с

$client->setScopes("openid","email","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile");
$token = $client->setAccessToken($access_token);
$idtoken= $token["id_token"]
$payload = $client->verifyIdToken($id_token);

if ($payload) {
    $email = $payload["email"];
    $name = $payload["given_name"];
    $surname = $payload["family_name"];
    $pic = $payload["picture"];
}

PS: проверьте устаревшие области действия здесь: Устаревший Google + API .Некоторые старые вызовы в Google+ все еще используются для получения, например, электронной почты или данных другого типа.

...