Flutter Google Sign_In
本文最后更新于:2025年1月2日 晚上
使用插件:google_sign_in
这个插件是基于firebase的,firebase是google旗下提供给移动应用和web平台使用的开放平台;
1. 注册firebase账号
google登录嘛,你得先有个google账号才能去注册firebase;
FireBase控制台
2. 创建项目和应用,在项目下创建android和ios应用
创建一个项目
在项目下新建android和ios应用
2.1 创建Android项目:
第一步写完之后其实就结束了,后面直接下一步下一步完成就行了(SHA-1签名肯定是要填的,不过现在不填,晚点填也可以)。第二步要你下载google-services.json文件放在项目中,如果只是用google登录这个插件,那么其实是不需要的,除非你用到了其他google服务。
(我在使用google message推送的时候是需要这个文件的,但是是根据配置它自动下载的,位置在android/app/google-services.json)
点击完成之后,设置Android项目:
上图所示页面需要添加指纹,就是SHA-1秘钥,debug和release的都需要填写,发布google play商店的时候,我用的是google play自带的签名,所有需要把这个签名也加进来;
值得注意的一点是,如果你没有自己生成z证书签名,androdi stduio会使用自己的默认debug签名证书,mac的文件位置:.android/debug.keystore;
生成证书参考:flutter android 打包自定义jks
获取签名SHA-1的方法:
1 |
|
2.2 创建ios项目:
这里的第二步需要下载一个GoogleService-Info.plist文件,这个文件需要放在ios/Runner这个目录下,其他的就没什么了;
3. 配置OAuth屏幕的凭据和OAuth权限请求页面
在左上角切换你刚才在firebase里面新建的项目,如果找不到,试试看看[全部]选项;
然后点击左侧菜单 OAuth权限请求页面,配置你的项目信息;
如果你一切顺利,这时候在凭据菜单内会有三个OAuth2.0 客户端ID,那么就没什么问题了;
在这里我遇到一个奇怪的错误,等会在下面再说;
4. 使用
1 |
|
使用时有个注意的地方,google账号会保持登录状态一段时间,如果我们想每次点击登录按钮都提示登录。那么就需要退出登录状态,达到切换账号的目的:
1 |
|
5. 遇到的问题
很快啊,ios嗖的一下就好了;
android遇到了问题,报错信息如下:
1 |
|
靠,这个问题高了好几个小时,按照stackoverflow的回答,我也一直以为这个是SHA-1签名的问题,我删除证书,重新新建,删除SHA-1,重新设置,但是问题依然存在,在此期间我升级了开发工具,清除android缓存,flutter缓存,添加了sha1和sha256两种秘钥,折腾死了也没好。
然后在github搜啊搜,看到这个问题:ISSUE #33393
Issue中提示填写好OAuth屏幕的所有必填信息,我填过了啊,其实这个Issue和我遇到的问题不太一样,但是据此我得出结论,问题就出在OAuth这一块的设置上。
图上的android是我自己手动加上去的,为什么ios和web是自动加上去的,android却没有呢,在我手动加上去之后,google 登录就好了,我草!!!
然后我把firebase项目里面android应用所有的SHA 证书指纹全部删除了,还是能登录,不应该啊,但是确实是可以,太奇怪了,哎!保险起见,我还是把debug和release签名的两个SHA-1加进去了,保险点吧,毕竟后面用其他第三方服务也是需要的。
后来我新建应用的时候,增加sha1, OAuth2.0客户端id是自动增加上去的,加几个SHA-1就会自动新增几个OAuth2.0客户端id,看来是这只是个偶然的bug,希望你们不会遇到;