Asked May 22nd, 7:28 a.m. 44 0 0
  • 44 0 0
0

Đăng nhập bằng gmail bằng firebase. Lỗi khi refresh token bằng google api client

Share
  • 44 0 0

Em chào các bác. Em đang có vấn đề với firebase và google API.

Vấn đề như sau

Em đang làm front-end react-js và sử dụng firebase để đăng nhập với gmail.

firebase trả về access_token và refresh_token. Sau đó em request access_token và refresh_token lên server của em. image.png

Tất cả mọi thứ đều ổn (gửi mail, ...)

nhưng sau 1 tiếng hết hạn token thì em refresh token thì bị lỗi như bên dưới

Array
(
    [error] => invalid_grant
    [error_description] => Bad Request
)

và đây là đoạn code để em refresh token

<?php
require_once __DIR__.'/vendor/autoload.php';

session_start();

function debug($msg) {
    echo "<pre>";
    print_r($msg);
    echo "</pre>";
}
const CLIENT_ID = "563762623872-8ka1114m12g9t8ajjcqp1pf3rhl2mnit.apps.googleusercontent.com";

$idToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjQ4NmYxNjQ4MjAwNWEyY2RhZjI2ZDkyMTQwMThkMDI5Y2E0NmZiNTYiLCJ0eXAiOiJKV1QifQ.xxxx";

$refreshToken = "AIwUaOmGtgE12PnksmP-KUC18uHjr29TDHBPhlsFK0gcVx_YkvK4pE8noVLop0N57NWZYaWaPfoqa1KIBPj6b0q7uitqv2MSjW9Y4rZScw6vof7mAY1IGDkrduD_rB8rMFwyXvPeTo=--xxxx";

$accessToken = "ya29.a0ARrdaM-Hvs88Dya4wZ5ZX1La7qQRr5YCi4YX1JmEjF1d07T35Mm_9r2jua1z6H0Py4IKXXcFhmzTo0textFje0_QAWvox0ebvB0YvYlEQp5oW4nYTlTH_Q-xxxx";

function createToken($accessToken, $refreshToken, $idToken = null)
{
    $token['access_token'] = $accessToken;
    $token['refresh_token'] = $refreshToken;
    $token['token_type'] = "Bearer";
    $token['expires_in'] = 3600;
    $token['id_token'] = $idToken;
  
    return $token;
}

$token = createToken($accessToken, $refreshToken, $idToken);

$client = new Google_Client(['client_id' => CLIENT_ID]);
$client->setAuthConfig('client_secrets.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
$client->setAccessToken($token);


debug($client->refreshToken($client->getRefreshToken()));

Nhờ anh em giúp em với ạ

Viblo
Let's register a Viblo Account to get more interesting posts.