當用戶第一次注冊時,我使用sendEmailVerification以下代碼:
FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
String uid = mFirebaseUser.getUid();
FirebaseFirestore db = FirebaseFirestore.getInstance();
mFirebaseUser.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
startToast("Plz go to your mail box.");
UserAccount account = new UserAccount(uid, strEmail, strPwd);
db.collection("Basic_users").document(mFirebaseUser.getUid()).set(account).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void avoid) {
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
startToast("failed to register");
}
});
這里是 useAccount.java
public class UserAccount {
private String idToken;
private String strEmail;
private String strPwd;
public void setIdToken(String idToken) {
this.idToken = idToken;
}
public void setStrEmail(String strEmail) {
this.strEmail = strEmail;
}
public void setStrPwd(String strPwd) {
this.strPwd = strPwd;
}
public String getIdToken() {
return idToken;
}
public String getStrEmail() {
return strEmail;
}
public String getStrPwd() {
return strPwd;
}
public UserAccount(String idToken, String strEmail, String strPwd) {
this.idToken = idToken;
this.strEmail = strEmail;
this.strPwd = strPwd;
}
注冊后的 Firebase 資訊
如您所見,所有資訊均已準確收到。
但是我想在用戶第一次使用該應用程式時收到更多資訊。所以我試圖通過以下代碼接收更多資訊
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user == null) { //IF there's no user information go to registerActiviety
startActivity(registerActivity.class);
} else { //else get current user information
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docRef = db.collection("users").document(user.getUid());
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) { //if document exist
Log.d(TAG, "DocumentSnapshot data: " document.getData());
} else { //else go to MemberinitActivity and receive some
//additional information
Log.d(TAG, "No such document");
startActivity(MemberinitActivity.class);
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
這是memberinfo.java,它有我想要接收更多的資訊。
public class MemberInfo
{
private String idToken;
private String name;
private String birthday;
private String address;
private String phone_number;
public MemberInfo(String idToken, String name, String birthday,String
phone_number,String address) {
this.idToken = idToken;
this.name = name;
this.birthday = birthday;
this.phone_number = phone_number;
this.address = address;
}
public void setIdToken(String idToken) {
this.idToken = idToken;
}
public void setName(String name) {
this.name = name;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public void setAddress(String address) {
this.address = address;
}
public void setPhone_number(String phone_number) {
this.phone_number = phone_number;
}
public String getIdToken() {
return idToken;
}
public String getName() {
return name;
}
public String getBirthday() {
return birthday;
}
public String getAddress() {
return address;
}
public String getPhone_number() {
return phone_number;
}
}
檢查日志后,我發現程式將檔案識別為存在,但實際上沒有 “如果檔案存在”的日志(空)
我認為該程式很困惑,因為它們共享相同的getcurrentuser()
內容我怎樣才能分離兩個用戶值并接收其他資訊?
uj5u.com熱心網友回復:
我認為程式很混亂,因為它們共享相同的 getcurrentuser()
不,這不是您沒有獲得任何資料的原因。您的代碼中的問題在于您將資料寫入到 Firestore 的以下位置:
db.collection("Basic_users").document(mFirebaseUser.getUid())
//??
但是您正試圖從不同的位置讀取:
DocumentReference docRef = db.collection("users").document(user.getUid());
//??
由于您的截圖顯示用戶存在于Basic_users集合下,為了解決該問題,請將最后一行代碼更改為:
DocumentReference docRef = db.collection("Basic_users").document(user.getUid());
//??
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484893.html
