提问人:Reshma Gawade 提问时间:9/27/2023 最后编辑:Reshma Gawade 更新时间:9/27/2023 访问量:30
为什么刷新令牌每 7 天过期一次?它是否会影响生产中的文件上传
Why do Refresh Token expires after every 7 days ? Does it affects the file upload on production
问:
我使用 Google Drive 的 API 实现了一个 Laravel 网络应用程序,用于存储。我 https://gist.github.com/sergomet/f234cc7a8351352170eb547cccd65011 使用了本教程。 当我尝试在谷歌驱动器上上传文件时,我面临每 7 天刷新一次令牌过期的问题。因此,如果刷新令牌已过期,它会影响我需要在生产环境中部署的 google 驱动器上的文件上传。
我尝试了这段代码,这个故事的寓意是,无论访问令牌过期还是刷新令牌过期,而文件上传流程都不应该出现错误
public function uploadFile(UploadedFile $uploadedFile, string $file,string $folderId)
{
$client = new Google_Client();
$client->setClientId(env('GOOGLE_DRIVE_CLIENT_ID'));
$client->setClientSecret(env('GOOGLE_DRIVE_CLIENT_SECRET'));
$client->refreshToken(env('GOOGLE_DRIVE_REFRESH_TOKEN'));
$this->refreshTokenIfNeeded($client);
$fileName = $uploadedFile->getClientOriginalName();
$mimeType = $uploadedFile->getClientMimeType();
$fileContent = file_get_contents($uploadedFile);
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => $fileName,
'parents' => array($folderId)
));
//file upload code
}
public function refreshTokenIfNeeded(Google_Client $client): void
{
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$newAccessToken = $client->getAccessToken();
$this->saveAccessTokenToStorage($newAccessToken);
}
else {
$oldAccessToken = $client->getAccessToken();
$this->saveAccessTokenToStorage($oldAccessToken);
}
}
public function saveAccessTokenToStorage($newAccessToken): void
{
$accessTokenJson = json_encode($newAccessToken);
$credentialsFilePath = env('GOOGLE_CREDENTIALS_FILE');
Storage::put("$credentialsFilePath", $accessTokenJson);
}
}
答: 暂无答案
评论