按Google Sheets API PHP快速入门操作报unauthorized_client错误如何解决
PHP Fatal error: Uncaught Google\Service\Exception: { "error": "unauthorized_client", "error_description": "Unauthorized" } in /usr/local/var/www/web/vendor/google/apiclient/src/Http/REST.php:128
错误产生原因
- 凭据文件无效:代码读取的
credentials.json和谷歌云控制台中对应项目的OAuth 2.0客户端信息不匹配,可能是文件下载错误、内容被篡改、路径配置错误导致。 - 应用类型不匹配:创建OAuth 2.0客户端ID时选错了应用类型,Google Sheets API PHP快速启动要求选择桌面应用类型,选择Web应用、移动应用等其他类型都会触发该错误。
- Google Sheets API未启用:项目未开启对应API接口权限,导致身份校验不通过。
- 作用域配置错误:代码中设置的API权限作用域和申请的权限不匹配,或者使用了需要额外审核的敏感作用域却未完成验证流程。
- 已保存的授权令牌失效:之前生成的
token.json对应的客户端凭据已被重置、项目权限被调整,旧令牌无法通过校验。
排查修复步骤
- 校验凭据配置:确认代码中
setAuthConfig方法传入的路径指向最新下载的credentials.json,打开文件核对client_id、client_secret参数和控制台中对应客户端的信息完全一致。 - 确认客户端应用类型:在谷歌云控制台「API和服务-凭据」页面,检查你使用的OAuth 2.0客户端ID的应用类型为桌面应用,如果类型错误,删除现有凭据重新创建桌面应用类型的客户端,下载新的
credentials.json替换旧文件。 - 确认API已启用:在控制台「API和服务-启用的API和服务」页面,搜索Google Sheets API,确认其状态为已启用,未启用则先开启后等待几分钟再测试。
- 清理旧授权令牌:删除项目目录下已生成的
token.json文件,重新运行代码触发新的授权流程,完成授权生成新令牌后再测试。 - 核对权限作用域:确认代码中配置的作用域符合你的使用需求,仅读取表格使用
Google\Service\Sheets::SPREADSHEETS_READONLY,需要修改表格使用Google\Service\Sheets::SPREADSHEETS即可,不要添加未用到的额外作用域。
内容的提问来源于stack exchange,提问作者ABHI KHANDELWAL
相关产品推荐
相关产品推荐

