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

使用Supabase、Flutter与Google OAuth:多端共用同一ClientId和ClientSecret可行吗?

关于Supabase+Flutter+Google OAuth跨平台共享Client ID/Secret的问题

结论:可以为iOS、Android和Web共享同一个Google OAuth Client ID,但Client Secret仅能在Supabase服务端配置,绝对不能在移动端暴露

具体配置方式:

  • Google Cloud Console侧:

    1. 创建或使用已有的OAuth 2.0客户端ID,在该客户端的配置页面中,添加多平台的校验信息:
      • Web平台:将Supabase项目的认证回调URL(格式为https://<你的项目ID>.supabase.co/auth/v1/callback)添加到「授权JavaScript来源」和「授权重定向URI」。
      • iOS平台:添加你的App Bundle ID到「iOS应用」配置项,同时将上述Supabase回调URL加入重定向URI列表。
      • Android平台:添加App的SHA-1指纹和包名到「Android应用」配置项,同样配置Supabase回调URL。
    2. Google允许同一个OAuth客户端ID关联多个平台的配置,无需单独创建多个客户端。
  • Supabase控制台侧:

    1. 进入「Authentication」→「Providers」→「Google」页面。
    2. 填入共享的Client ID和对应的Client Secret(此Secret仅在Supabase服务端与Google通信时使用,不会暴露给前端/移动端)。
    3. 保存配置后,Flutter的iOS、Android、Web端都可以直接使用Supabase SDK的signInWithOAuth(Provider.google)方法完成认证,无需各自单独配置认证参数。

关键安全提示:

  • 禁止在iOS/Android的客户端代码中硬编码Client Secret,这会导致敏感信息泄露,引发账号安全风险。通过Supabase代理认证的方式,移动端完全不需要接触Secret。
  • 务必确保Google Console中各平台的校验信息(如iOS的Bundle ID、Android的SHA-1)配置正确,否则会出现认证失败、回调被拦截等问题。

内容的提问来源于stack exchange,提问作者Andrea D'Attero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:45:34