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

PHP调用Google API报missing required redirect URI错误如何解决?

问题解决方案

错误根因

报错是因为你使用的OAuth 2.0凭证类型和场景不匹配,未配置符合要求的重定向URI。你之前用urn:ietf:wg:oauth:2.0:oob不生效,是因为该重定向地址仅适配桌面应用类型的OAuth凭证,你之前创建的凭证类型不符合要求。

方案1:沿用原OAuth授权模式(需要首次手动授权)

如果你需要用个人/企业普通账号的权限操作Google资源,按以下步骤操作:

  • 前往Google Cloud控制台重新创建OAuth 2.0凭证,创建时必须选择「桌面应用」类型,不要选网页应用、安卓/iOS应用等其他类型
  • 下载新生成的凭证JSON文件,替换你现有的secret.json
  • 在你现有代码的setAuthConfig配置后,新增一行重定向URI配置兜底:
$client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
  • 如果你需要上传Google Drive文件,记得把原代码里的People API权限范围替换为Drive对应的权限,比如:
// 替换原有People API的scope配置
$client->setScopes(Google_Service_Drive::DRIVE_FILE);

调整后重新运行脚本,生成的授权链接就可以正常完成授权,复制返回的验证码粘贴到命令行即可自动生成token.json,后续无需再手动授权。

方案2:改用服务账号(适配纯服务端无人工介入场景)

如果你的脚本是服务器到服务器的自动化运行场景,不需要每次人工授权,更推荐使用服务账号方案,配置更简单:

  • 前往Google Cloud控制台创建服务账号,生成JSON格式的密钥文件,保存为service-account.json替换原有凭证
  • 调整鉴权代码逻辑,无需手动授权流程,示例如下:
<?php
require __DIR__ . '/vendor/autoload.php';

function getClient()
{
    $client = new Google_Client();
    $client->setApplicationName('Drive Upload Script');
    // 按需调整权限范围,DRIVE_FILE仅允许操作脚本上传的文件,权限更安全
    $client->setScopes(Google_Service_Drive::DRIVE_FILE);
    $client->setAuthConfig('service-account.json');
    $client->setAccessType('offline');
    return $client;
}

$client = getClient();
  • 如果你需要将文件上传到自己个人账号的Google Drive中,需要打开对应Drive文件夹的共享设置,给服务账号的邮箱地址(可在服务账号详情页查看)授予编辑权限,否则服务账号默认只能操作自己独立的网盘空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:15:04