Thần đồng toán học
Senior Member
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.
Em dùng access token để gửi email, ...
nhưng sau 1 tiếng hết hạn token thì em refresh token thì bị lỗi như bên dưới
Và đây là đoạn code để em refresh token
Mong anh em có hướng thì hướng dẫn em với ạ. Em cảm ơn
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.
Em dùng access token để gửi email, ...
nhưng sau 1 tiếng hết hạn token thì em refresh token thì bị lỗi như bên dưới
Code:
Array (
[error] => invalid_grant
[error_description] => Bad Request
)
Và đây là đoạn code để em refresh token
PHP:
<?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()));
Mong anh em có hướng thì hướng dẫn em với ạ. Em cảm ơn