Youtube 数据 api 在 accesstype 设置为离线时请求同意
Youtube data api asks for consent while accesstype is set to offline
我在一个网站上实现了 Google Youtube 数据 api,让用户看到某些频道的视频。我已经阅读了 Google 中关于如何使用它的文档,并使用了离线访问类型,因为它允许 API 自动执行,在它过期后刷新访问令牌。
API 工作正常,但我仍然在 1 小时后(访问令牌过期的默认时间)收到授权提示,同时我有自动刷新访问令牌的代码。
我没有提供我使用的所有代码,只提供了处理 API 令牌设置和过期的代码,因为其他代码工作正常。
对于我在这里做错的任何帮助,将不胜感激。
已更新
$client = new Google_Client();
$client->setAuthConfigFile($config);
$client->setRedirectUri($redirect);
$client->addScope('https://www.googleapis.com/auth/youtube.readonly');
$client->setAccessType('offline');
if(file_exits($aToken){
$accessToken = file_get_contents($aToken);
$client->setAccessToken($accessToken);
if($client->isAccessTokenExpired()) {
if($client->getRefreshToken()){
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$client->setAccessToken($client->getAccessToken());
file_put_contents($aToken, $client->getAccessToken());
} else {
authorize();
}
}
您正在应用刷新令牌,但并未实际使用它来获取新的访问令牌。
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$client->setAccessToken($client->getAccessToken());
我在一个网站上实现了 Google Youtube 数据 api,让用户看到某些频道的视频。我已经阅读了 Google 中关于如何使用它的文档,并使用了离线访问类型,因为它允许 API 自动执行,在它过期后刷新访问令牌。
API 工作正常,但我仍然在 1 小时后(访问令牌过期的默认时间)收到授权提示,同时我有自动刷新访问令牌的代码。
我没有提供我使用的所有代码,只提供了处理 API 令牌设置和过期的代码,因为其他代码工作正常。
对于我在这里做错的任何帮助,将不胜感激。
已更新
$client = new Google_Client();
$client->setAuthConfigFile($config);
$client->setRedirectUri($redirect);
$client->addScope('https://www.googleapis.com/auth/youtube.readonly');
$client->setAccessType('offline');
if(file_exits($aToken){
$accessToken = file_get_contents($aToken);
$client->setAccessToken($accessToken);
if($client->isAccessTokenExpired()) {
if($client->getRefreshToken()){
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$client->setAccessToken($client->getAccessToken());
file_put_contents($aToken, $client->getAccessToken());
} else {
authorize();
}
}
您正在应用刷新令牌,但并未实际使用它来获取新的访问令牌。
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$client->setAccessToken($client->getAccessToken());