Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menyegarkan Semula Token Akses Pelanggan API Google dengan Cekap untuk Mengelakkan Ralat 'invalid_grant'?

Bagaimana untuk Menyegarkan Semula Token Akses Pelanggan API Google dengan Cekap untuk Mengelakkan Ralat 'invalid_grant'?

Susan Sarandon
Lepaskan: 2024-12-17 08:14:24
asal
736 orang telah melayarinya

How to Efficiently Refresh Google API Client Access Tokens to Avoid

Menyegarkan Token Akses Klien API Google

Memahami Isu

Apabila menggunakan API Google Analitis, anda mungkin menghadapi ralat apabila cuba mengakses data daripada berbilang Akaun Google. Isu ini timbul kerana token akses tamat tempoh selepas sejam. Memuat semula token menggunakan $client->refreshToken() sepatutnya menyelesaikan masalah, tetapi dalam beberapa kes, ia mungkin mengembalikan ralat "invalid_grant".

Penyelesaian

Untuk menyegarkan semula token dengan betul, anda perlu memahami berikut:

  • Token Pertama: Token awal yang anda perolehi semasa pengesahan termasuk token muat semula.
  • Token Temp: Token yang diperbaharui , diperoleh menggunakan $client->refreshToken($refreshToken), adalah sah untuk a jam.
  • Masa Muat Semula: Kedua-dua token pertama dan token temp tamat tempoh selepas sejam.

Pelaksanaan Kod

Kod yang dilampirkan menunjukkan penyelesaian untuk menguruskan token tamat tempoh:

// Retrieve the original token.
$originalToken = json_decode($token);

// Calculate token expiration time.
$now = time();
$expirationTime = $originalToken->created + 3600;

// Check if token is expired.
if ($now > $expirationTime) {
    // If expired, use the refresh token from the original token to obtain a new temporary token.
    $client->refreshToken($originalToken->refresh_token);
    $newToken = $client->getAccessToken();
    $tokenQuery = "UPDATE token SET token='$newToken' WHERE type='refresh'";
    mysqli_query($cxn, $tokenQuery);
    $token = $newToken;
} else {
    // If the original token hasn't expired, set the token as the original token.
    $client->setAccessToken($token);
}
Salin selepas log masuk

Kod ini mendapatkan semula token asal, mengira masa tamat tempohnya dan menyemak sama ada ia telah tamat tempoh. Jika ya, ia menyegarkan token menggunakan token segar semula dan mengemas kini pangkalan data. Jika token asal belum tamat tempoh, ia menetapkan token akses pelanggan sebagai token asal.

Atas ialah kandungan terperinci Bagaimana untuk Menyegarkan Semula Token Akses Pelanggan API Google dengan Cekap untuk Mengelakkan Ralat 'invalid_grant'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan