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

使用Capacitor调用Google APIs时出现Error 403问题求助

iOS端调用Google Calendar API返回403的排查方案

核心原因分析

你的问题大概率和权限范围、凭证配置或Token有效性相关,Google APIs完全支持Capacitor应用发起请求,不是平台限制导致的。以下是具体排查点:

1. Access Token的权限范围(Scopes)未包含Calendar权限

浏览器端可能在认证时请求了Calendar相关权限,但iOS端的capacitor-google-auth配置里遗漏了对应scope。Google Calendar API需要明确申请权限:

  • 若需读写日历:https://www.googleapis.com/auth/calendar
  • 若仅需只读:https://www.googleapis.com/auth/calendar.readonly

检查capacitor.config.json中的GoogleAuth配置,确保scopes数组包含所需权限:

{
  "plugins": {
    "GoogleAuth": {
      "scopes": [
        "email",
        "profile",
        "https://www.googleapis.com/auth/calendar.readonly"
      ],
      "clientId": "YOUR_IOS_CLIENT_ID",
      "iosClientId": "YOUR_IOS_SPECIFIC_CLIENT_ID"
    }
  }
}

2. Google Cloud Console的iOS客户端凭证配置错误

即使你添加了REVERSED_CLIENT_ID的URL scheme,若Cloud Console中的iOS客户端凭证配置有误,Token会因受众(Audience)不匹配被API拒绝:

  • 确认iOS客户端的Bundle ID和你Xcode项目中的Bundle ID完全一致(大小写、标点都不能错)
  • 检查Google Cloud Console中是否已启用Google Calendar API(搜索API库,找到Calendar API并启用)
  • 确保你在capacitor.config.json中填写的iosClientId是Cloud Console中iOS客户端的Client ID,而非Web客户端的ID

3. Access Token的受众(Audience)验证失败

Capacitor-google-auth返回的Token可能绑定了错误的客户端ID,导致API不认。你可以解码Token(用本地JWT解码工具操作)查看aud字段:

  • 若aud值不是你Cloud Console中iOS客户端的Client ID,说明认证时用错了客户端凭证,需修正capacitor.config.json中的iosClientId配置

4. Axios请求头格式错误

确认Authorization头的格式完全正确:

  • 必须是 Bearer <你的Access Token>,注意Bearer和Token之间有一个空格
  • 检查请求头的key是否为Authorization(严格遵循规范可避免兼容性问题)

比如正确的Axios请求配置:

axios.get('https://www.googleapis.com/calendar/v3/calendars/primary/events', {
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:40:54