如何从 uid Firebase 数据库中获取电子邮件地址?

Posted

技术标签:

【中文标题】如何从 uid Firebase 数据库中获取电子邮件地址?【英文标题】:How to get the email address from uid Firebase database? 【发布时间】:2018-12-17 19:34:39 【问题描述】:

我需要从uid 获取一位用户(不是当前用户)的电子邮件地址。我的数据库有一个名为“用户”的孩子,这个孩子有孩子,其中的键是所有用户的 uid。我需要通过他们的 uid 获取其他用户的电子邮件地址。

String uidReceiver = "B53Bk4dtHjZ6a3ZjoO2cEowEf4w2";
DatabaseReference usersRef;
usersRef = FirebaseDatabase.getInstance().getReference().child("users");

// To get the email address of the current user
FirebaseUser userSender = FirebaseAuth.getInstance().getCurrentUser();
String emailSender = userSender.getEmail();    

usersRef.child(uidReceiver).addListenerForSingleValueEvent(new ValueEventListener() 
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) 
                    if (dataSnapshot.exists()) 
                    
                        // How can I get the email address of uidReceiver
                    
                

                @Override
                public void onCancelled(DatabaseError databaseError) 
            );

谢谢!

【问题讨论】:

听起来像一个相当基本的值监听器,如下所述:firebase.google.com/docs/database/android/… 你尝试过了吗? 是的,我知道我需要使用监听器,问题是要写什么才能收到电子邮件。我已经用代码更新了帖子 您显示的数据库没有用户电子邮件...该数据库中的每个用户对象是否都有包含用户电子邮件的子对象?您能否展开其中一位用户以显示您的数据是如何设置的 不,没有孩子包含电子邮件。这些电子邮件只是在 FirebaseAuth 中。我正在寻找不使用特定孩子来获取电子邮件的方法,但如果没有其他方法,我应该将电子邮件保存在“用户”数据库中...... 使用 Android SDK for Firebase 身份验证确实无法根据其 UID 查找其他用户的电子邮件。不过,可以使用 Firebase Admin SDK,但它适用于受信任的环境(您的开发系统、您控制访问的服务器或 Firebase 的 Cloud Functions)而不是 Android应用程序。 【参考方案1】:

如果你的意思是你想使用他的uid从FirebaseAuth获取用户的电子邮件,那么从android客户端是不可能的。只有 firebase 管理员可以从FirebaseAuth 获取用户的电子邮件,而 android sdk 没有管理员权限。您需要将电子邮件添加到 Firebase 数据库才能获取所需用户的电子邮件。

【讨论】:

如果您觉得这有帮助,请将其标记为正确答案,并提前感谢。

以上是关于如何从 uid Firebase 数据库中获取电子邮件地址?的主要内容,如果未能解决你的问题,请参考以下文章

我如何从颤动的firebase实时数据库中检索数据

如何每次从 Firebase 数据库中获取随机 UId?

如何获取知道电子邮件用户的 Firebase UID?

如何从所有用户 ID (UID) 中获取特定值并保存在 RecyclerView Firebase UI

如何从android上的firebase获取用户uid?

如何使用 Vue.js Firebase UID 删除用户