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

Flutter Supabase谷歌授权非本地环境异常排查求助

解决Supabase谷歌授权在Firebase Hosting环境卡住的问题

以下是针对该问题的排查与解决步骤:

1. 调整Firebase Hosting重写与缓存规则

Firebase Hosting的SPA重写规则可能拦截Supabase的Auth回调请求,导致流程中断。检查并修改firebase.json:

{
  "hosting": {
    "public": "dist",
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ],
    "headers": [
      {
        "source": "/auth/**",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache, no-store, must-revalidate"
          }
        ]
      }
    ]
  }
}

确保你配置的重定向URL(如https://your-domain.web.app/auth/callback)能正常加载,不会被缓存或错误重定向。

2. 修复PKCE流程的Cookie配置

线上浏览器可能限制第三方Cookie,导致Supabase无法存储授权状态。初始化Supabase客户端时显式配置Cookie选项:

const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
  auth: {
    redirectTo: window.location.origin + '/auth/callback',
    cookieOptions: {
      secure: true, // HTTPS环境必须开启
      sameSite: 'none', // 允许跨域Cookie传递
      maxAge: 3600
    }
  }
})

同时在Supabase控制台Authentication > Settings > Cookie Settings中,将SameSite设为None并开启Secure选项。

3. 确认HTTPS环境与混合内容

确保Firebase Hosting域名的SSL证书配置正常,页面无HTTP资源加载(混合内容)。谷歌授权流程强制要求HTTPS环境,混合内容会导致请求被浏览器拦截。

4. 清除浏览器缓存与Cookie

线上环境的旧缓存或残留Cookie可能干扰授权状态。打开浏览器开发者工具,清除对应域名的所有Cookie和缓存后重试。

5. 校验客户端初始化细节

  • 确认线上使用的Supabase URL、Anon Key与控制台完全一致,避免误用到本地测试配置。
  • 确保redirectTo参数与Supabase控制台的重定向URL完全匹配,包括域名前缀(如www/非www)、末尾斜杠等细节。

6. 排查浏览器控制台错误

打开浏览器开发者工具的Console和Network标签:

  • 查看是否有CORS错误、Cookie被阻止的警告信息。
  • 检查/auth/v1/authorize请求的响应状态,以及后续是否触发了/auth/v1/token请求(用于交换授权码获取Token),若未触发则说明前端未正确处理回调逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:22:45