我有一个简单的输入框询问用户的电子邮件。Firebase电子邮件验证工作流程
我希望他们输入一些东西,让我检查它是一个字符串,然后发送验证电子邮件到他们输入的电子邮件地址。
然后,一旦通过用户邮件客户端验证并点击链接,我想要将用户添加到我的Firebase用户。
目前,我只是在没有通过SMTP发送任何电子邮件的情况下进行测试,只是将数据添加到Firebase。但是,我添加的电子邮件未添加到我的Firebase数据库中。
当前代码的HTML体的底部,其他脚本标记之前(这应该是在头?):
<script src="https://www.gstatic.com/firebasejs/3.6.1/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "myapikey",
authDomain: "mydomain.firebaseapp.com",
databaseURL: "https://mydomain.firebaseio.com",
storageBucket: "mydomain.appspot.com",
messagingSenderId: "mymessagesenderid"
};
firebase.initializeApp(config);
</script>
<script src="assets/js/saveEmail.js" type="text/javascript"></script>
然后,我有一个输入框:
<div class="mtb">
<h2 class="signup-title">Sign up for updates on our project</h2>
<p id="signup-success" class="text-success"></p>
<p id="signup-error" class="text-danger"></p>
<form class="signup-form form-inline" id="signup-form" role="form" onsubmit="return signup(this)">
<div id="div">
<input type="email" name="email" class="subscribe-input" placeholder="Enter your e-mail address..." required>
<button class='btn btn-conf btn-yellow' id="signup-button" type="submit">Submit
</button>
</div>
</form>
</div>
这是saveEmail.js
:
var signupForm = document.getElementById('signup-form');
var signupSuccess = document.getElementById('signup-success');
var signupError = document.getElementById('signup-error');
var signupBtn = document.getElementById('signup-button');
var onSignupComplete = function (error) {
signupBtn.disabled = false;
if (error) {
signupError.innerHTML = 'Sorry. Could not signup.';
} else {
signupSuccess.innerHTML = 'Thanks for signing up!';
// hide the form
signupForm.style.display = 'none';
}
};
function signup(formObj) {
// Store emails to firebase
var myFirebaseRef = new Firebase("https://mydomain.firebaseio.com/signups");
myFirebaseRef.push({
email: formObj.email.value,
}, onSignupComplete);
signupBtn.disabled = true;
return false;
}
我知道signup
乐趣正在调用ction,因为我尝试了一个简单的JS警报,当点击提交按钮时弹出。不过,我在/signups
部分下的Firebase数据信息中心看不到任何更改。此外,URL变化:
http://localhost:5000/?email=theemailthatwasputintothebox
我修改了规则:
{"rules":
{".read": true,
".write": true
}
}
所以,我认为,我已经启用了所有用于测试目的,这是不是规则。
我怎样才能达到我想达到的目的(没有,然后用电子邮件确认部分)?
什么是错误的现有的设置,没有通过SendGrid的电子邮件确认等?
谢谢@Rexford,这是完美的。我如何在邮件中保留唯一性?推送的Firebase ID是唯一的,但它们与我推入的电子邮件无关。我只想允许使用唯一的电子邮件,并在该电子邮件已在HTML页面上注册时提醒用户。 –
@DhruvGhulati从电子邮件和密码创建用户的Firebase功能将在错误已存在时返回重复的电子邮件错误。 – ostergaard