Firebase Google 用户未在 Firebase 控制台身份验证中显示

Posted

技术标签:

【中文标题】Firebase Google 用户未在 Firebase 控制台身份验证中显示【英文标题】:Firebase Google users not showing in Firebase Console Authentication 【发布时间】:2017-12-10 18:26:55 【问题描述】:

使用 Firebase Google 身份验证,当用户使用其 google 帐户成功登录时,他们不会显示在我们的 Firebase 控制台身份验证->用户屏幕上。只有电子邮件/密码用户显示在那里。

是否需要做一些额外的事情才能看到 Google Auth 用户?

【问题讨论】:

请添加一些代码。 如果您的身份验证一切正常,则无需额外步骤 OAuth 用户(例如 Google)只有在您通过调用 signInWithCredential() 将他们登录到 Firebase 后才会显示在 Firebase 控制台中。在那次通话之前,他们可能已登录 Google,但尚未登录 Firebase。 确实,这就是问题所在。我没有在任何地方调用 signInWithCredential() 并且它成功登录了 Google,但没有登录到 Firebase。 【参考方案1】:

按照以下步骤操作:

触发 Google 身份验证流程。

 

final GoogleSignInAccount googleUser = await GoogleSignIn().signIn();
从请求中获取身份验证详细信息。

 

final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
创建新凭据

 

final GoogleAuthCredential googleCredential = GoogleAuthProvider.credential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );
使用 Google [UserCredential] 登录 Firebase

 

final UserCredential googleUserCredential =
    await FirebaseAuth.instance.signInWithCredential(googleCredential);

就是这样!!

【讨论】:

【参考方案2】:

在 Flutter 中,除了 GoogleSignIn 之外,还需要安装 firebase_auth 包。

https://pub.dev/packages/firebase_auth#-installing-tab-

https://pub.dev/packages/firebase_auth

import 'package:firebase_auth/firebase_auth.dart';

final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;

Future<FirebaseUser> _handleSignIn() async 
  final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
  print("signed in " + user.displayName);
  return user;


...

_handleSignIn()
    .then((FirebaseUser user) => print(user))
    .catchError((e) => print(e));

【讨论】:

FirebaseUser 已弃用,请改用 User!【参考方案3】:

正如 Frank 所说,要完全登录 Firebase,需要调用 signInWithCredential()。实施此功能后,使用 Google 登录的用户会显示在 Firebase 控制台中。

【讨论】:

如何使用 google connect 实现这个signInWithCredential()?谢谢 const googleCredential = firebase.auth.GoogleAuthProvider.credential(response.idToken); firebase.auth().signInWithCredential(googleCredential) .then(user => );

以上是关于Firebase Google 用户未在 Firebase 控制台身份验证中显示的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 和 VueJS:如何处理使用 Google 登录但未在我的应用中注册的用户?用户资料管理

Firebase Firestore 未在 google chrome 中获取数据

Fire Storage Exception([firebase_storage/unauthorized] 用户无权执行所需的操作。)(我的规则是允许读/写)

如何从应用程序远程强制注销firebase auth用户

为啥注册用户未在 Firebase 中进行身份验证?为啥用户不能将产品添加到数据库 Firebase?

尝试为 Google Analytics 安装 Firebase