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

PHP调用Gmail API出现redirect_uri_mismatch错误求助

解决PHP开发Gmail API时的redirect_uri_mismatch错误

这个redirect_uri_mismatch错误是OAuth 2.0配置里最常见的问题之一,结合你遇到的情况,我整理了PHP环境下的具体解决步骤:

1. 核心问题:Google Cloud控制台的重定向URI未正确配置

这是绝大多数此类错误的根源,你需要确保代码里的重定向URI和Google Cloud控制台里的完全一致:

  • 登录Google Cloud控制台,找到你的项目,进入「API和服务」→「凭据」页面
  • 找到你代码中client_id对应的「OAuth 2.0客户端ID」,点击编辑
  • 在「已授权的重定向URI」列表中,添加或确认存在完全匹配的https://mywebsite.com/AilaGmail/gmail.php
    • 注意细节:必须和代码里的URI完全一致,包括http/https协议、路径大小写、结尾是否有斜杠(比如代码里是gmail.php就不能写成gmail.php/)

2. 代码配置要和控制台保持统一

不要随意修改redirect_uri为postmessage——postmessage是JavaScript隐式授权流的用法,PHP使用的是授权码流,必须使用实际的后端回调URI:

$client = new Google_Client();
$client->setClientId('42XXXXXX3p0o9XXXXXXXXXXXXXXXXX.apps.googleusercontent.com');
$client->setClientSecret('XXXXXXrLXX22Ld-1XXXXXXX');
// 确保这里的URI和控制台里的完全一致
$client->setRedirectUri('https://mywebsite.com/AilaGmail/gmail.php');
$client->addScope('https://mail.google.com/');

3. 正确处理client_secret.json文件

如果你尝试用client_secret.json配置,要注意两点:

  • 文件里的redirect_uris数组必须包含正确的URI
  • 代码中如果同时使用setRedirectUri(),会覆盖文件里的配置,建议二选一:
    要么完全用代码配置(如上),要么用文件加载:
    $client = new Google_Client();
    // 加载client_secret.json,这里会自动读取里面的client_id、client_secret和redirect_uris
    $client->setAuthConfig('client_secret.json');
    $client->addScope('https://mail.google.com/');
    // 不需要再手动setRedirectUri
    

4. 排查缓存和生效延迟

  • Google Cloud控制台的配置更新可能需要1-5分钟生效,修改后不要立刻测试,等几分钟再试
  • 用浏览器的隐身窗口测试,避免旧的授权会话缓存干扰

5. 本地测试验证(可选)

如果线上环境排查麻烦,可以先在本地测试:

  • 把代码里的redirect_uri改成http://localhost/AilaGmail/gmail.php
  • 在控制台添加这个本地URI到授权列表
  • 本地运行代码,确认授权流程正常后,再切换回线上URI

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:08:55