Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase从电子邮件获取uid_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase从电子邮件获取uid

Java Firebase从电子邮件获取uid,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想从输入电子邮件中获取uid,以便可以通过电子邮件添加朋友 以下是我到目前为止得到的信息: final DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("users"); FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { final Str

我想从输入电子邮件中获取uid,以便可以通过电子邮件添加朋友

以下是我到目前为止得到的信息:

final DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("users");
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user != null) {
        final String currentUserUid = user.getUid();

        mRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.hasChild(uid)) {
                DatabaseReference newRef = mRef.child(uid);
                newRef.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if (!dataSnapshot.hasChild(uid)) {
                            DatabaseReference database = FirebaseDatabase.getInstance().getReference();
                            String username = String.valueOf(dataSnapshot.child("username").getValue());
                            String email = String.valueOf(dataSnapshot.child("email").getValue());
                            String firebaseToken = String.valueOf(dataSnapshot.child("firebaseToken").getValue());

                            Friend friend = new Friend(uid, username, email, firebaseToken);
                            database.child(Constants.ARG_USERS)
                                    .child(currentUserUid)
                                    .child(Constants.ARG_FRIENDS)
                                    .child(uid)
                                    .setValue(friend)
                                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if (task.isSuccessful()) {
                                                mOnFriendDatabaseListener.onSuccess(context.getString(R.string.friend_successfully_added));
                                            } else {
                                                mOnFriendDatabaseListener.onFailure(context.getString(R.string.friend_unable_to_add));
                                            }
                                        }
                                    });
                        } else {
                            Log.d("Adding Friend", "User already not exist");
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
                } else {
                    Log.d("Adding Friend", "User does not exist");
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
final DatabaseReference mRef=FirebaseDatabase.getInstance().getReference().child(“用户”);
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
如果(用户!=null){
最后一个字符串currentUserUid=user.getUid();
mRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.hasChild(uid)){
DatabaseReference newRef=mRef.child(uid);
newRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
如果(!dataSnapshot.hasChild(uid)){
DatabaseReference database=FirebaseDatabase.getInstance().getReference();
String username=String.valueOf(dataSnapshot.child(“username”).getValue());
String email=String.valueOf(dataSnapshot.child(“email”).getValue());
String firebaseToken=String.valueOf(dataSnapshot.child(“firebaseToken”).getValue());
Friend Friend=新朋友(uid、用户名、电子邮件、firebaseToken);
database.child(Constants.ARG_用户)
.child(currentUserUid)
.child(Constants.ARG_-FRIENDS)
.child(uid)
.setValue(朋友)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
mOnFriendDatabaseListener.onSuccess(context.getString(R.string.friend_已成功添加));
}否则{
mOnFriendDatabaseListener.onFailure(context.getString(R.string.friend\u无法添加));
}
}
});
}否则{
Log.d(“添加朋友”,“用户已不存在”);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}否则{
Log.d(“添加朋友”,“用户不存在”);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
如果我直接输入uid,但我希望我的输入是电子邮件并从中获取uid,或者如果有其他解决方案,请建议

以下是数据库结构的外观:


提前感谢您的帮助。

要通过用户的电子邮件地址搜索用户,您需要订购/筛选该属性:

Query query = mRef.orderByChild("email").equalTo("example@example.com");
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // There may be multiple users with the email address, so we need to loop over the matches
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            System.out.println(userSnapshot.getKey());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "find email address:onCancelled", databaseError.toException());
        // ...
    }
});
与问题没有直接关系,但请重新构造数据以删除好友和个人资料的嵌套。出于多种原因,最好保持Firebase数据结构平坦,并将用户配置文件与好友列表分开

/users
  uid1: ... profile for user 1
  uid2: ... profile for user 2
/friends
  uid1: ... friends list for user 1
  uid2: ... friends list for user 2