我已成功设置Firebase电子邮件/密码身份验证,但出于安全考虑,我希望用户确认她/他的电子邮件.它在Firebases网站上说:
当用户使用电子邮件地址和密码注册时,会发送确认电子邮件以验证其电子邮件地址.
但是当我注册时,我没有收到确认电子邮件.
我看过,只能找到发送密码重置电子邮件的代码,但不能找到发送电子邮件确认的代码.
我看过这里:
https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email
有谁知道我怎么做?
我正在使用Firebase的电子邮件和密码方法注册我的用户.像这样:
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser signed = task.getResult().getUser();
writeNewUser(signed.getUid());
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
updateUser(b);
}
}, 3000);
} else {
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
onSignupFailed();
}
}, 3000);
}
}
});
Run Code Online (Sandbox Code Playgroud)
用户的电子邮件成功注册后,我希望Firebase发送验证邮件.我知道这可以使用Firebase sendEmailVerification.除了发送此电子邮件之外,我希望在验证电子邮件之前禁用该用户的帐户.这也需要使用Firebase的isEmailVerified功能.但是,我没有成功让Firebase发送验证邮件,我无法弄清楚是否要禁用并启用发送验证邮件的帐户以及验证后.
所以,我在开发控制台中启用了电子邮件/密码,一切正常.除了我应该收到我输入的电子邮件的确认电子邮件,但我没有得到它.我认为它会自动完成,但显然它没有.
注册方法:
public void signUp(View v) {
String email = emailET.getText().toString();
String password = passwordET.getText().toString();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("AD", "createUserWithEmail: " + task.isSuccessful() + task.getException());
if (!task.isSuccessful()) {
createDialogSignUpError(
getApplicationContext().getResources().getString(R.string.signUpFailedET),
getApplicationContext().getResources().getString(R.string.signUpFailedEM),
getApplicationContext().getResources().getString(android.R.string.ok));
Toast.makeText(SignUp.this, task.getException().toString(), Toast.LENGTH_LONG).show();
} else if (task.isSuccessful()) {
Toast.makeText(SignUp.this, "Registration Successful.", Toast.LENGTH_SHORT).show();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
它应该是发送,但遗憾的是它不是.我已经在SO上找到了你需要添加一个方法或者某些东西来发送电子邮件,而且它在文档中缺失,但那不是Java.
编辑
根据这里,它仅在iOS和Web中受支持.这是非常令人惊讶的,因为毕竟android是谷歌,谷歌是Firebase.即使创建自定义发送的电子邮件,它也可以吗?
编辑2:更清楚的是,Android是否有像C#这样的电子邮件发件人.如果没有这方面的API,这将是最好的解决方案.
我正在尝试允许用户通过搜索用户名来启动游戏并关注其他用户.我需要能够确保具有该用户名的用户存在.我正在使用以下代码但是虽然它if被调用但是else它应该被调用.
let checkWaitingRef = Firebase(url:"https://test.firebaseio.com/users")
checkWaitingRef.queryOrderedByChild("username").queryEqualToValue("\(username!)")
.observeEventType(.ChildAdded, withBlock: { snapshot in
if snapshot.value.valueForKey("username")! as! String == username! {
} else {
}
Run Code Online (Sandbox Code Playgroud)
JSON数据树
{
"097ca4a4-563f-4867ghj0-6209288bd7f02" : {
"email" : "test1@tes1.com",
"uid" : "097ca4a4-563f-4867ghj0-6209288bd7f02",
"username" : "test1",
"waiting" : "0"
},
"55a8f979-ad0d-438u989u69-aa4a-45adb16175e7" : {
"email" : "test2@test2.com",
"uid" : "55a8f979-ad0d-438u989u69-aa4a-45adb16175e7",
"username" : "test2",
"waiting" : "0"
}
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,当用户输入电子邮件和密码时,他可以注册并登录.但是如何确保注册用户是电子邮件所有者而不使用某人的电子邮件(我使用firebase进行身份验证).
如果上面有任何一个,该怎么办?