使用 Xamarin.Forms 和 .net Standard 进行 Firebase 电子邮件/密码身份验证 (VS2017)

Rah*_*hul 2 cross-platform firebase xamarin.forms firebase-authentication

Firebase 电子邮件/密码身份验证是否可以使用通用代码 .net 标准的 Android 和 IOS 通用代码进行开发?我已经设计了具有 .XAML 格式的简单登录页面,但我没有找到任何与 Firebase 身份验证与 Xamarin.Forms 和 .net 标准代码共享集成相关的示例。如果这个策略可行的话可以给我提供集成示例将有助于进一步理解。

EvZ*_*EvZ 5

是的,这绝对是可能的。
由于只有特定于平台的 Xamarin.Firebase NuGet 包,因此我们必须创建一个简单的抽象层,如下所示:

public interface IFirebaseAuthenticator
{
    Task<string> LoginWithEmailPassword(string email, string password);
}
Run Code Online (Sandbox Code Playgroud)

每个平台都必须单独实现此接口。安卓实现:

public class FirebaseAuthenticator : IFirebaseAuthenticator
{
    public async Task<string> LoginWithEmailPassword(string email, string password)
    {
        var user = await FirebaseAuth.Instance.
                        SignInWithEmailAndPasswordAsync(email, password);
        var token = await user.User.GetIdTokenAsync(false);
        return token.Token;
    }
}
Run Code Online (Sandbox Code Playgroud)

iOS 实现:

public class FirebaseAuthenticator : IFirebaseAuthenticator
{
    public async Task<string> LoginWithEmailPassword(string email, string password)
    {
        var user = await Auth.DefaultInstance.SignInAsync(email, password);
        return await user.GetIdTokenAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

IFirebaseAuthenticator现在您可以简单地在 XF 级别上使用。有关更多详细信息,您可以查看有关它的详细文章,其源代码可在此处找到。

  • Xamarin.iOS 发生了一些变化。现在您必须使用“Auth.DefaultInstance.SignInWithPasswordAsync(电子邮件,密码);”以及“user.User.GetIdTokenAsync();” (2认同)