firebase - 在 Flutter 中使用 Firebase 身份验证检查用户是否是新用户

标签 firebase authentication dart flutter

根据this page的底部, AdditionalUserInfo 提供了一个名为 isNewUser() 的方法来检查社交登录(Facebook、Google 等)是登录还是注册。 this answer. 中给出了示例Flutter 的问题是我找不到任何名为 AdditionalUserInfo 的类或名为 getAdditionalUserInfo() 的函数。那么有谁知道如何检查用户是否是第一次注册,最好使用 Facebook 和 Firebase 身份验证。

我正在使用 firebase_authflutter_facebook_login .

最佳答案

AdditionalUserInfo 是 AuthResult 类的一个方法。如果你想检查用户是否是第一次登录,那么你可以使用 additionalUserInfo.isNewUser 的值。以下代码使用 Google Auth 登录用户。

Future<FirebaseUser> _signIn() async {
 try {
  GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
  GoogleSignInAuthentication gSA = await googleSignInAccount.authentication;
  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: gSA.accessToken,
    idToken: gSA.idToken,
  );
  AuthResult authResult = await _auth.signInWithCredential(credential);
  if (authResult.additionalUserInfo.isNewUser) {
    //User logging in for the first time
    // Redirect user to tutorial 
  }
  else {
    //User has already logged in before.
    //Show user profile
  }
} catch (e) {
  print(e.message);
}}

编辑:因为这个问题是针对 Facebook 登录的,所以我也添加了该代码。下面的代码使用了 flutter_facebook_loginfirebase_auth 包。

Future<FirebaseUser> _facebookAuthHandler() async {
  final result = await facebookLogin.logInWithReadPermissions(['email']);
  final AuthCredential credential = FacebookAuthProvider.getCredential(accessToken: result.accessToken.token);
  AuthResult authResult = await _auth.signInWithCredential(credential);
  if (authResult.additionalUserInfo.isNewUser) {
    //TODO User logging in for the first time. Redirect to Pages.SignUp Page
  }
  else {
    //TODO User has already logged in before. Redirect to Home Page
  }

}

关于firebase - 在 Flutter 中使用 Firebase 身份验证检查用户是否是新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51819652/

相关文章:

javascript - 如何处理 Firebase Cloud Functions 中的错误 JSON?

node.js - Socket.io 官方聊天应用程序无法在 firebase 上运行

c# - 如何从不活动但与事件服务器连接的服务器设置 Img src

java - Android 应用程序登录屏幕 - 错误变量和共享首选项比较

xcode - 您的 Xcode 版本对于您的 iOS 版本来说可能太旧了

dart - 带有 dart 和 polymer 的图形库

android - Flutter 如何在没有任何用户交互的情况下从一个页面导航到另一个页面

javascript - 在新表中从 Firebase 存储打开文件而不下载

使用 Microsoft Azure Active Directory 进行 PHP 用户身份验证

firebase - getter 'image' 在 null 上被调用