Flutter的Google登录未在Firebase中注册

问题描述 投票:0回答:1

1。问题

我正在尝试使用Firebase和Flutter实现简单的Facebook和Google登录按钮,但是Google版本的行为很奇怪。当我打印FirebaseAuth.instance.currentUser()时,我会收到错误消息或以前的Facebook登录数据。

当我使用Facebook登录时,我的帐户does出现在Firebase上,但是Google登录似乎没有任何作用。

这是我在下面的代码中弄乱的东西,还是AndroidX与这些库的某些部分不兼容的问题?还有别的吗?

[另外,对于我是否必须将Project public-facing name放置在我的项目中的某个地方以使与Firebase的集成正常工作(我必须做一些类似于设置Facebook登录按钮的事情,我也不太清楚。

2。 Facebook登录

我必须将logInWithReadPermissions替换为signInWithCredential,因为最新版本已更改了它们的API。我也尝试使用软件包的早期版本,但是遇到了很多错误(可能是由于AndroidX):

final _auth = FirebaseAuth.instance;

Future<FirebaseUser> _loginWithFacebook () async {
  final facebookLogin = FacebookLogin();
  final result = await facebookLogin.logInWithReadPermissions(['email']);

  if (result.status == FacebookLoginStatus.loggedIn){
    final FacebookAccessToken accessToken = result.accessToken;
    AuthCredential credential = FacebookAuthProvider.getCredential(
      accessToken: accessToken.token,
    );

    AuthResult signInResult = await _auth.signInWithCredential(credential);

    FirebaseUser fbUser = signInResult.user;
    return fbUser;
  }
  else{
    return null;
  }
}

3。 Google登录

再次,signInWithCredential似乎是最新的API:

Future<FirebaseUser> _loginWithGoogle () async{
  final GoogleSignIn _googleSignIn = GoogleSignIn();

  GoogleSignInAccount googleUser = await _googleSignIn.signIn();

  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );
  AuthResult signInResult = await _auth.signInWithCredential(credential);

  final FirebaseUser user = signInResult.user;

  print(user);

  return user;
}

编辑

我已经在Android 9.0(Pie)模拟器上尝试过,但仍然无法正常工作。

firebase flutter facebook-login google-login
1个回答
0
投票

显然,考虑到最新的API,我的身份验证代码对于Google和Facebook都是正确的。

但是我需要将SHA1 Fingerprint集成到我的Firebase环境中,这是我不知道需要做的事情,因为我所遵循的所有教程都没有提到它,并且在启用Google登录后可以很容易地将其删除。 Firebase中的方法。

无论如何,这是获取SHA1 Fingerprint所需完成的步骤:

  1. 打开命令提示符和cd C:\Program Files\Android\Android Studio\jre\bin
  2. 获取SHA1键:
    keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
    
  3. 转到Firebase Console > Project settings > Add Key并添加密钥。
© www.soinside.com 2019 - 2024. All rights reserved.