[英]How to send SMS with confirmation code using Firebase?
我的應用中有兩組人——經理和員工。 經理可以注冊他們的員工。 基本上他們為他們填寫表格(電話號碼、全名、出生日期等)。 所有信息都保存在雲 firebase 中的employees
集合中。
員工無法注冊該應用程序,他們只能“驗證他們的電話號碼”。 如果他們的電話號碼已在系統中注冊,那么他們應該會收到一條帶有確認碼的短信。 如您所見,我目前將員工信息保存在數據庫中,而不是在身份驗證部分(就像我為使用 email 和密碼登錄的經理所做的那樣)。
思路如下:
所以我有兩個問題:
另外我想提一下,我不使用 FirebaseUI(我們有一個自定義的登錄視圖)。
您可以這樣做,使用此代碼發送 otp:
private String verificationCode = "";
private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallback;
sendOtp();
varifyMobile();
private void sendOtp() {
auth = FirebaseAuth.getInstance();
mCallback = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
}
@Override
public void onVerificationFailed(FirebaseException e) {
pd.dismiss();
Toast.makeText(OtpVerificationActivity.this, "OTP Sent failed, Please click on Resend OTP.", Toast.LENGTH_SHORT).show();
}
@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
pd.dismiss();
verificationCode = s;
Toast.makeText(OtpVerificationActivity.this, "OTP has been sent on " + mobile, Toast.LENGTH_SHORT).show();
}
};
}
private void varifyMobile() {
PhoneAuthProvider.getInstance().verifyPhoneNumber(
"+91" + mobile, // Phone number to verify
2, // Timeout duration
TimeUnit.MINUTES, // Unit of timeout
OtpVerificationActivity.this, // Activity (for callback binding)
mCallback);
}
對於驗證 Otp:
String otp = edtOtp.getText().toString();
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationCode, otp);
SigninWithPhone(credential);
private void SigninWithPhone(PhoneAuthCredential credential) {
auth.signInWithCredential(credential)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(OtpVerificationActivity.this, "Otp verification complete", Toast.LENGTH_SHORT).show();
} else {
pd.dismiss();
Toast.makeText(OtpVerificationActivity.this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.