angular - 在不使用 sendEmailVerification 方法的情况下,在 Firebase 中使用 AuthProvider 连接时自动验证用户电子邮件?
问题描述
我已经使用 Firebase 在我的应用程序上实现了连接 GitHub、Twitter 和 Facebook 的按钮AuthProvider
。即使它有效并且用户已注册并登录,但电子邮件地址仍被视为未验证。因为他们使用另一个平台上已经存在的帐户进行连接,我假设他们的电子邮件已经通过这些平台验证,所以我想跳过这个sendEmailVerification()
阶段并自动考虑他们的电子邮件经过验证。我怎样才能在 Angular 中做到这一点?
这是我实现登录过程的方式:
async loginWithSocial(social: string) {
try {
let provider = null;
if (social === "github") {
provider = new firebase.auth.GithubAuthProvider();
} else if (social === "twitter") {
provider = new firebase.auth.TwitterAuthProvider();
} else if (social === "facebook") {
provider = new firebase.auth.FacebookAuthProvider();
}
const result = await firebase.auth().signInWithPopup(provider);
const credential = result.credential;
const user = await this.auth.signInWithCredential(credential);
await this.router.navigate(["/", "home"]);
} catch (error) {
// do something
}
}
解决方案
并非所有平台都会验证所有电子邮件地址。对于那些这样做的人(@gmail.com 的 Google,@facebook.com 的 Facebook 等),Firebase 身份验证在用户配置文件的验证状态中反映了这一点。
如果您想对您的应用程序有更宽松的要求,您可以使用 Admin SDK 从受信任的环境设置emailVerified
标志。这不能从客户端 SDK 完成,因为这将允许任何用户设置自己的标志。
推荐阅读
- postgresql - db owner 如何授予对 postgres 中其他用户表的选择权限?
- python - Selenium Send_keys 方法多次发送路径
- google-chrome-extension - 无缘无故拒绝谷歌扩展
- reactjs - 为什么用到达路由器重新渲染整个页面?
- python - 奇数开始时如何停止循环?
- php - php password_verify codeigniter3
- discord.py - 如何让我的 Bot 发送随机的预定义嵌入消息?
- git - Bitbucket:根据更改的代码有条件地添加默认审阅者?
- excel - Power Query 中的数据转换
- javascript - 无法部署 Firestore 云功能