You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YouTube视频上传Bot授权问题:如何无需手动登录获取持久Access Token?

解决YouTube上传Bot的自动授权问题

核心方案

要摆脱手动重复登录的困境,关键是获取长期有效的Refresh Token,通过它自动刷新短期的Access Token,实现Bot的无人值守运行。

步骤1:获取包含Refresh Token的初始凭据

你需要先手动完成一次授权流程,拿到带Refresh Token的完整凭据:

  • 为Google_Client配置YouTube上传所需的权限范围(https://www.googleapis.com/auth/youtube.upload)
  • 开启离线访问模式(setAccessType('offline')),这是获取Refresh Token的必要设置
  • 生成授权URL,手动登录账户获取授权码,再用授权码交换出包含Access Token和Refresh Token的JSON凭据

示例代码:

$client = new Google_Client();
$client->setClientId(YOUTUBE_CLIENT_ID);
$client->setClientSecret(YOUTUBE_CLIENT_SECRET);
$client->setScopes(['https://www.googleapis.com/auth/youtube.upload']);
$client->setAccessType('offline'); // 必须开启才能拿到Refresh Token
$client->setPrompt('consent'); // 确保首次授权返回Refresh Token

// 生成授权URL,复制到浏览器完成登录授权
$authUrl = $client->createAuthUrl();
echo "请访问此URL授权: $authUrl\n";

// 输入从浏览器获取的授权码,交换凭据
$authCode = '你拿到的授权码';
$token = $client->fetchAccessTokenWithAuthCode($authCode);
// 将凭据保存到本地文件,后续Bot直接读取
file_put_contents('youtube-token.json', json_encode($token));

步骤2:自动刷新Access Token

后续Bot启动时,加载保存的凭据,Google_Client会自动处理Token过期问题:

$client = new Google_Client();
$client->setClientId(YOUTUBE_CLIENT_ID);
$client->setClientSecret(YOUTUBE_CLIENT_SECRET);
$client->setScopes(['https://www.googleapis.com/auth/youtube.upload']);

// 加载本地保存的凭据
$token = json_decode(file_get_contents('youtube-token.json'), true);
$client->setAccessToken($token);

// 检查Token是否过期,自动刷新
if ($client->isAccessTokenExpired()) {
    if ($client->getRefreshToken()) {
        // 用Refresh Token获取新的Access Token
        $newToken = $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        // 更新本地保存的凭据
        $token = array_merge($token, $newToken);
        file_put_contents('youtube-token.json', json_encode($token));
        $client->setAccessToken($token);
    } else {
        die('无有效Refresh Token,请重新完成授权');
    }
}

// 现在可以正常调用API上传视频了

关键注意事项

  • 首次授权时,确保Google账户允许应用的离线访问权限
  • 保存凭据的youtube-token.json要做好权限保护,避免泄露
  • 若长期未使用,Refresh Token可能失效,需重新执行一次授权流程

内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:32:55