当前位置: 首页 > 知识库问答 >
问题:

从Firebase身份验证控制台获取标识符字段

上官波鸿
2023-03-14

但是,当我调用firebase.auth().电流用户时,会加载用户信息,但是电子邮件字段是null。关于如何从Firebase获取标识符(我在其中看到电子邮件地址)的任何想法?这可能吗?

以下是我正在使用的代码:

    componentDidMount() {

      let user = firebase.auth().currentUser;
      let name, email, photoUrl, uid, emailVerified;

      if (user !== null) {
       name = user.displayName;
       email = user.email;
       photoUrl = user.photoURL;
       emailVerified = user.emailVerified;
       uid = user.uid;

       console.log(name, email, photoUrl, emailVerified, uid);
      }

    }

注意:Firebase中启用了防止创建具有相同电子邮件地址的多个帐户。此外,Facebook API权限设置为['public_profile','email']

共有2个答案

西门正平
2023-03-14

在我的情况下,getEmail() 方法始终返回三种登录可能性的数据(如果用户授权我的应用显示/使用电子邮件):使用电子邮件登录,使用Google登录,使用Facebook登录。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
Log.v(TAG,"user.getEmail():"+user.getEmail());

if (user.getEmail() == null){
    // User did not authorize the app to show/user email
}
else {
   Log.v(TAG,"user.getEmail():"+user.getEmail());   
}
冯飞鹏
2023-03-14

经过一些测试和调试后,我发现如果您使用常规的Firebase电子邮件/密码登录方法,将会填充< code>email字段。但是,如果您使用其他登录提供商方法,如,电子邮件字段将显示为< code>null(不知道为什么)。

进一步检查用户对象发现了一个提供者数据属性。它是一个包含所有提供商信息(包括电子邮件地址)的数组:

因此,我更新了我的代码以适应以下情况:

    componentDidMount() {

      let user = firebase.auth().currentUser;

      let name, email, photoUrl, uid, emailVerified;

      if (user) {
        name = user.displayName; 
        email = user.email;
        photoUrl = user.photoURL; 
        emailVerified = user.emailVerified;
        uid = user.uid;

        if (!email) {
          email = user.providerData[0].email;
        }

        console.log(name, email, photoUrl, emailVerified, uid);
      }

    }
 类似资料:
  • 我想对我的Vue使用Firebase身份验证。js应用程序考虑以下限制: 我无法使用任何受支持的提供商(Facebook、Google等) 我不能使用电子邮件-该应用程序是为孩子们设计的,因此,我想使用他们在注册时选择的唯一昵称,而不是电子邮件,该昵称必须使用本地rtl语言(非英语) 我想使用firebase云函数作为唯一的服务器端代码 期望的结果是:a)使用昵称、密码注册 如何使用firebas

  • 我正在开发ASP NET核心Web API,对认证方式的选择感到困惑。我曾经应用默认的Asp Net身份验证,但最近我知道了JWT。因此,我几乎像本文中一样实现了身份验证:https://stormpath.com/blog/token-authentication-asp-net-core。但是我不能理解这个JWT的好处。通过简单的Asp Net身份认证,我不关心令牌存储等,我只需要用signI

  • 我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?

  • 在本章中,我们将匿名认证用户。 步骤1 - 启用匿名身份验证 这和我们以前的章节是一样的。需要打开Firebase信息中心,点击侧边菜单中的Auth和标签栏内的认证方法,需要启用匿名身份验证。 第2步 - 登录功能 可以使用方法进行此认证。 示例 让我们来看看下面的例子,参考示例代码 -

  • 使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。

  • 我们正在尝试做一些具有登录屏幕的网站。但是我们有一个问题。我们的域是本地主机/登录/用户。但是,如果用户进入localhost/Home/Index,他/她无需登录即可访问我们的主站点。因此,我们将 [授权] 写入索引控制器。但我不知道我必须使用什么。我是否必须在我们的项目中使用AuthorizeAttribute? 如何访问LoginController/Authentication函数中的索引