我正在开发一个带有Firebase用户身份验证的Android应用程序。我面临的问题是我从用户那里获得电子邮件和密码,然后将该用户创建到 Firebase 中。我没有验证用户输入的电子邮件。现在我想实现重置密码功能。为此,Firebase 提供了重置密码方法,并向该特定用户发送重置密码电子邮件。但问题是,如果电子邮件不存在,那么我们应该怎么做?
以下是我用于在Firebase中注册用户的代码:
private void registerUser(){
//creating a new user
firebaseAuth.createUserWithEmailAndPassword("user email here", "user password here")
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//checking if success
if(task.isSuccessful()){
//display some message here
}else{
//display some message here
}
}
});
}
如果此功能有任何替代选项可用,请告诉我。谢谢。
使用 Firebase 管理员 SDK 更改用户的密码。从有关更新用户信息的文档中:
updateUser()
方法允许您修改现有用户的数据。它接受用户要更新的uid
以及包含要更新UserRecord
属性的对象:admin.auth().updateUser(uid, { email: "modifiedUser@example.com", emailVerified: true, password: "newPassword", displayName: "Jane Doe", photoURL: "http://www.example.com/12345678/photo.png", disabled: true }) .then(function(userRecord) { // See the UserRecord reference doc for the contents of userRecord. console.log("Successfully updated user", userRecord.toJSON()); }) .catch(function(error) { console.log("Error updating user:", error); });
跟:
密码字符串 - 用户新的原始未哈希密码。长度必须至少为 6 个字符。
Firebase Admin SDK 的这一部分目前仅在 Node.js 中可用。但是,如果您还没有 Node.js 服务器,则可以在 Cloud Functions for Firebase 中实现该功能。
请尝试使用以下代码可能会对您有所帮助,我正在使用这个。
private FirebaseUser user;
user = FirebaseAuth.getInstance().getCurrentUser();
final String email = user.getEmail();
AuthCredential credential = EmailAuthProvider.getCredential(email,oldpass);
user.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
user.updatePassword(newPass).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(!task.isSuccessful()){
Snackbar snackbar_fail = Snackbar
.make(coordinatorLayout, "Something went wrong. Please try again later", Snackbar.LENGTH_LONG);
snackbar_fail.show();
}else {
Snackbar snackbar_su = Snackbar
.make(coordinatorLayout, "Password Successfully Modified", Snackbar.LENGTH_LONG);
snackbar_su.show();
}
}
});
}else {
Snackbar snackbar_su = Snackbar
.make(coordinatorLayout, "Authentication Failed", Snackbar.LENGTH_LONG);
snackbar_su.show();
}
}
});
}
}