热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:将多个Auth提供程序链接到一个帐户

篇首语:本文由编程笔记#小编为大家整理,主要介绍了将多个Auth提供程序链接到一个帐户相关的知识,希望对你有一定的参考价值。 我已经实施了Facebook和Google登录。但FireBase文档称,

篇首语:本文由编程笔记#小编为大家整理,主要介绍了将多个Auth提供程序链接到一个帐户相关的知识,希望对你有一定的参考价值。



我已经实施了Facebook和Google登录。

但FireBase文档称,如果同一用户首先注册Facebook并稍后尝试使用Google登录(使用相同的电子邮件),则会导致错误。

所以我按照doc并尝试配置帐户链接。

但我不知道该怎么做。

我应该在每次用户登录时尝试链接帐户吗?问题是我不知道用户是否已经使用其他身份验证提供程序登录。

例如,原始代码具有:

谷歌:

void _signInWithGoogle() async {
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
}

Facebook的:

void _signInWithFacebook() async {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: _tokenController.text,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
}

每次都在_signInWithFacebook()_signInWithGoogle()打电话是正确的:

user = await auth.linkWithCredential(credential);

例如:

void _signInWithFacebook() async {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: _tokenController.text,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
user = await auth.linkWithCredential(credential); //new
}

我怎么能正确实施?

谢谢!


答案

当用户输入他们的电子邮件地址进行登录时,您将需要使用fetchProvidersForEmail()来查明该电子邮件地址是否已知。

如果用户已经与其他提供商签约,那么现在是询问他们是否要合并这些帐户,然后调用帐户链接API的好时机。


另一答案

@FlutterFirebase为了将两个提供商与相同的电子邮件链接,请按以下方式进行操作,

单击Firebase控制台 - >身份验证 - > SignIn方法,如下所示enter image description here

现在,在此signIn方法下方,有一个名为“每个电子邮件地址的多个帐户”的选项,单击更改并启用“允许使用相同的电子邮件地址创建多个帐户” - >保存。你们都准备好了。现在,您可以使用不同提供商的相同电子邮件登录

enter image description here

就是这样但是如果你想从两个提供商那里获得电子邮件,那么你需要添加额外的代码。如果要为两个提供商使用电子邮件,您可以发表评论。



推荐阅读
author-avatar
黄雅萱介芳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有