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] 用户无权执行所需的操作。)(我的规则是允许读/写)