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标签配置
- 打开Flutter项目里的
web/index.html文件 - 在
<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
相关产品推荐
相关产品推荐

