我有一個簡單的輸入框詢問用戶的電子郵件。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