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
Susan Sarandonasal
2024-12-17 08:14:24737semak imbas

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);
}

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!

Kenyataan:
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 sebelumnya:Di manakah Fail php.ini Saya?Artikel seterusnya:Di manakah Fail php.ini Saya?