android - Firebase 电话已验证
问题描述
Firebase中是否有方法可以调用以检查用户是否已验证电话号码?我已经一切正常(用户输入国家代码/电话号码,自动输入 OTP 代码并开始正确的活动),但我想检查用户是否已验证电话号码,以防他没有我想要禁止他访问某些活动。
对于电子邮件,有,isEmailVerified()
但对于电话验证,只有getPhoneNumber
方法。
解决方案
根据我在教程视频中使用的代码,如果未经验证, user.getPhoneNumber()将不包含任何数字。 它甚至不会出现在 Firebase 网站的身份验证列表中。
鉴于此知识,我不仅检查 user.getPhoneNumber() 是否为空,我还检查 user.getPhoneNumber() 是否不包含“+”(因为如果它包含“+”则表示有经过验证的电话号码)。
以下代码有助于解决“电子邮件已验证?” 和“电话号码已验证?” 难题。
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
if (user != null &&
(user.getPhoneNumber() == null ||
(user.getPhoneNumber() != null &&
!user.getPhoneNumber().contains("+")))
) {
if (!user.isEmailVerified()) {
verifyMsg.setVisibility(View.VISIBLE);
editor.putString("capturegoogleloginonetime", "1");
editor.apply();
resendCode.setVisibility(View.VISIBLE);
resendCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//send verification link
FirebaseUser fuser = mAuth.getCurrentUser();
user.sendEmailVerification().addOnSuccessListener(new
OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(v.getContext(), "Verification Email has been Sent.",
Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(LoginActivity.this,
"Error: Email not sent " + e.getMessage(),
Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
if (user != null && user.getPhoneNumber() != null
&& user.getPhoneNumber().contains("+")) {
SendUserToMainActivity();
}
if (user != null && user.isEmailVerified() ) {
SendUserToMainActivity();
}
推荐阅读
- node.js - How to check whether a directory exists in node.js?
- mongodb - mongo local server uninstallition
- angular - 创建项目时无法取消定义 Angular 6
- reactjs - 如何在没有 Redux 的情况下更新子组件而不重新渲染
- angular - 用于 Angular 的 Kendo UI 中的 ASP.NET Core OData Web 服务、Angular 5 和网格组件
- javascript - 打印预览如何仅显示部分视图
- java - Java RMI 连接错误:未连接到本地主机
- git - Git总是不提交修改过的文件
- list - 如何在 Java 8 中将对象列表转换为地图?
- reporting-services - 显示单列到多列(n 次)