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:
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!