robert_n
@robert_n

Проверка токена с помощью Google APIs Client Library for PHP?

Здравствуйте! Помогите пожалуйста решить проблему, связанную с проверкой токена на стороне сервера.
В Android приложении я получаю токен:
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
 if (result.isSuccess()) {
                GoogleSignInAccount acct = result.getSignInAccount();
                String idToken = acct.getIdToken();
                ...
                // TODO(user): Здесь отпралвяю полученный токен на сервер.
            } else {
                // Show signed-out UI.
            }


На сервере проверяю токен:
function getUserFromToken($token) {
    $client = new Google_Client();
    $client->setClientId(CLIENT_ID);
    $client->setClientSecret(CLIENT_SECRET);
    $client->setRedirectUri('');
    $client->setScopes('email');

    $client->setAccessToken($token);

    $ticket = $client->verifyIdToken();
        if ($ticket) {
            $data = $ticket->getAttributes();
            return $data['payload']['sub']; // user ID
        }
         return false
    }


Но происходит ошибка " id_token must be passed in or set as part of setAccessToken". Есть подозрение, что я где-то накосячил с access_token. Читал доки и смотрел примеры, но не могу понять как сделать простую проверку токена, чтобы в ответ мне пришла информация о пользователе.
  • Вопрос задан
  • 716 просмотров
Решения вопроса 1
Все на самом деле очень просто. У вас ошибка в коде проверки токена. Используйте следующий код:
function getUserFromToken($token) {
    $client = new Google_Client();
    $client->setClientId(CLIENT_ID);
    $client->setClientSecret(CLIENT_SECRET);
    $client->setRedirectUri('');
    $client->setScopes('email');

   $user_data = $client->verifyIdToken($access_token);
   // Здесь работаете с json для получения конкретных данных
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы