颤振谷歌登录为空

Posted

技术标签:

【中文标题】颤振谷歌登录为空【英文标题】:Flutter google sign in null 【发布时间】:2019-03-12 07:47:34 【问题描述】:

调试了几个小时没有任何结果,我已经放弃了。我一直在通过创建一个连接到 Firebase 实时数据库的应用程序来学习 Flutter,该应用程序在调试模式下工作并通过 adb 进行本地安装。但是每当我(或我的任何朋友)通过 adb 以外的其他东西(例如包管理器或其他东西)安装包时,我都会遇到问题。

对于初学者,这是我的 pubspec.yaml 的相关部分:

dependencies:
  google_sign_in: 3.2.1
  firebase_auth: 0.5.20
  firebase_core: 0.2.5

在我的全状态小部件的开头:

final FirebaseAuth _fAuth = FirebaseAuth.instance;
final GoogleSignIn _gSignIn = new GoogleSignIn();
final DatabaseReference database = FirebaseDatabase.instance.reference().child("users");

以及我的代码的相关部分:

googleSignInAccount = await _gSignIn.signIn(); // [1]
authentication = await googleSignInAccount.authentication; // [2]

...

_firebaseUser = await _fAuth.signInWithGoogle(
    idToken: authentication.idToken,
    accessToken: authentication.accessToken);

...

所以问题是,使用 google_sign_in 包的 3.0.5 版本有点旧,我得到了错误:

PlatformException(sign_in_failed, StatusstatusCode=CANCELED, resolution=null, null)

在点 [1] 处,即使登录对话框从未取消,只是在选择要使用的 google 帐户之后。这在调试模式下永远不会发生,就好像 google 在登录时拒绝生产应用程序一样。当我将 google_sign_in 包更新到版本 3.2.1 时,我在 [2] 点收到以下消息:

NoSuchMethodError: The getter 'authentication' was called on null.
Receiver: null
Tried calling: authentication

这意味着步骤 [1] 不再导致错误,而只是返回 null,因此它在步骤 [2] 处失败。我在调试模式下没有这个问题,所以登录流程应该没有问题。

注意:我确实使用了本地签名密钥库,但我从来没有遇到过任何问题。 注意 2:我也对他们提出了问题,因为我找不到任何看起来像我的问题的东西,请参阅 here。

【问题讨论】:

【参考方案1】:

查看问题页面 (here),通过更新到 google_sign_in 版本 3.2.2 解决了这个问题,它给出了一个明显的错误,所以我实际上可以解决这个问题。

最后,这与颤振本身无关(尽管它和 google_sing_in 库没有帮助),而是与密钥库有关。始终使用密钥库。

【讨论】:

我怀疑我可能有类似的问题。您的密钥库问题是什么?您是如何解决的?

以上是关于颤振谷歌登录为空的主要内容,如果未能解决你的问题,请参考以下文章

linux字符测试

列表为空(颤振)

如何等到列表不为空? - 颤振期货

颤振错误->必须初始化不可为空的“项目”

使用脚本选项及组合条件测试

PHPActiveRecord validates