我想为多个身份验证提供者提供电话,facebook以及简单的电子邮件和密码。
事实是,如果该帐户与相同的电子邮件地址链接,我希望提供相同的帐户(相同的用户ID,相同的显示名称)。
正如我通过文档了解的那样,如果用户已经连接并链接了与另一个提供者的帐户,则可以执行此操作。
所以我的问题是:无论如何,是否可以自动执行此操作,例如,用户下次与另一个提供程序连接时,不必告诉他自己链接它。
默认情况下,Firebase身份验证每个用户只允许一个电子邮件地址。请参阅Firebase控制台中“身份验证提供程序”页面底部的本节:
因此,当您注册一个新用户时,您应该得到一个带有错误代码FirebaseException的AccountExistsWithDifferentCredentials。
要处理此问题,您需要使延续看起来像:
/* Registration call */.ContinueWithOnMainThread(task=>{
if (task.Exception) {
foreach (var e in task.Exception.InnerExceptions) {
var fe = e as FirebaseException;
if (fe != null) {
if (fe.ErrorCode == AuthError.AccountExistsWithDifferentCredentials) {
TryToLinkInsteadOfCreateAccount(); // TODO - cache credentials and implement this
}
}
}
}
});
让我知道是否有帮助!
-帕特里克