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

Flutter Web谷歌登录点击按钮触发断言失败错误求助

Flutter Web谷歌登录点击按钮触发断言失败错误求助

嘿,我看你碰到了Flutter Web谷歌登录的断言失败问题,先别着急,咱们来一步步解决它!

首先,你遇到的错误核心提示已经说得很清楚了:

Uncaught (in promise) Error: Assertion failed: file:///C:/Users/computer%20planet/AppData/Local/Pub/Cache/hosted/pub.dev/google_sign_in_web-0.12.0/lib/google_sign_in_web.dart:147:9
appClientId != null
"ClientID not set. Either set it on a <meta name="google-signin-client_id" content="CLIENT_ID" /> tag, or pass clientId when initializing GoogleSignIn"

简单来说,就是google_sign_in_web插件找不到你的谷歌登录ClientID,所以触发了断言失败。这里有两种靠谱的解决方式,你选一种就行:

方式一:通过HTML meta标签配置

  1. 打开Flutter项目里的web/index.html文件
  2. 在<head>标签内部添加一行meta标签,把其中的CLIENT_ID替换成你从谷歌云控制台获取的Web应用ClientID:
<meta name="google-signin-client_id" content="你的Web应用ClientID.apps.googleusercontent.com">

方式二:初始化GoogleSignIn时直接传入clientId

在你初始化GoogleSignIn的代码里,直接指定clientId参数,示例代码如下:

final GoogleSignIn _googleSignIn = GoogleSignIn(
  clientId: '你的Web应用ClientID.apps.googleusercontent.com',
  // 这里可以添加你需要的权限 scope,比如邮箱、联系人等
  scopes: [
    'email',
    'https://www.googleapis.com/auth/contacts.readonly',
  ],
);

额外注意事项

  • 别忘了确认你的ClientID是Web应用类型的,别用成Android或iOS的ClientID,不同平台的ClientID不通用
  • 去谷歌云控制台检查是否已经启用了「Google Sign In API」,并且把你当前的测试域名(比如localhost:50294)或生产域名添加到「授权的JavaScript来源」列表里,不然会出现跨域问题

备注:内容来源于stack exchange,提问作者sekyewa Alan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:49:32