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

iOS端Google Sign In后Python后端令牌验证遇redirect_uri_mismatch错误

Google Sign-In auth_code 转凭证时出现redirect_uri_mismatch错误

问题详情

在Python FastAPI后端,尝试用iOS模拟器上Google Sign In(GIDSignIn)获取的auth_code提取凭证,代码如下:

credentials = client.credentials_from_clientsecrets_and_code(
        CLIENT_SECRET_FILE,
        ['https://www.googleapis.com/auth/calendar.readonly'],
        auth_code,
    )

持续收到错误:

oauth2client.client.FlowExchangeError: redirect_uri_mismatchBad Request

已尝试操作

  • 已知oauth2client库废弃,改用新版google-auth库的Flow方式,错误仍存在
  • 反复核对Google官方iOS离线访问教程及Stack Overflow方案,检查重定向URL无效
  • ID Token验证功能正常,代码如下:
verified_info = id_token_verifier.verify_oauth2_token(id_token, requests.Request(), CLIENT_ID)

凭证信息

  • 后端OAuth凭证截图:后端OAuth凭证截图
  • iOS端OAuth凭证截图:iOS端OAuth凭证截图

排查与解决步骤

  1. 禁止混用客户端凭证
    iOS端生成的auth_code只能搭配iOS OAuth客户端凭证兑换,不能用后端Web客户端凭证。Google Sign-In的auth_code与生成它的客户端绑定,Web客户端和iOS客户端的重定向URI规则完全不同,混用必然触发不匹配错误。

  2. 确认iOS端重定向URI配置
    iOS端Google Sign-In默认重定向URI为com.googleusercontent.apps.{你的iOS客户端ID}:/oauth2callback,必须确保这个URI已添加到Google Cloud控制台对应iOS客户端的「已获授权的重定向URI」列表中。

  3. 新版google-auth库正确写法
    加载iOS客户端的密钥文件,明确指定对应重定向URI:

from google_auth_oauthlib.flow import Flow

# 注意:这里用iOS客户端的secret文件,不是后端Web的
flow = Flow.from_client_secrets_file(
    "ios_client_secret.json",
    scopes=['https://www.googleapis.com/auth/calendar.readonly'],
    redirect_uri="com.googleusercontent.apps.{你的iOS客户端ID}:/oauth2callback"
)

# 兑换auth_code获取凭证
credentials = flow.fetch_token(code=auth_code)
  1. 校验auth_code有效性
  • auth_code仅能使用一次,重复调用会报错
  • iOS端获取auth_code时必须请求offline_access权限,否则无法兑换可刷新的凭证
  • 确保iOS模拟器的Bundle ID与Google Cloud控制台配置完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:46:07