Android Firebase Apple登录Xamarin表单实现

Android Firebase Apple登录Xamarin表单实现,android,ios,firebase,apple-sign-in,Android,Ios,Firebase,Apple Sign In,大家好,我有一个分布式系统,由2个应用程序和一个网站组成,所有这些都与firebase项目通信 由于我不久前已经实现了Facebook登录,我必须强制实现与苹果的签名,现在必须向苹果商店提交应用程序的新版本 现在,我已经通过React在我的网站上实现了apple登录,流程如下: AppleLogin using Popup -> jwtToken -> callback to my backend service to validate generate the publi

大家好,我有一个分布式系统,由2个应用程序和一个网站组成,所有这些都与firebase项目通信

由于我不久前已经实现了Facebook登录,我必须强制实现与苹果的签名,现在必须向苹果商店提交应用程序的新版本

现在,我已经通过React在我的网站上实现了apple登录,流程如下:

 AppleLogin using Popup -> 
 jwtToken -> 
 callback to my backend service to validate generate the public key ->
 session start
现在我必须使用Firebase.Auth nugget在Xamarin.Forms上实现所有这些,我需要一个在Android和iOS上工作的跨平台解决方案(我已经添加了Apple Signin功能,所以没有问题),唯一的问题是Firebase.Auth中不存在任何支持Apple登录或使用弹出流登录的原语,我唯一发现的是:

}

//
///使用apple登录服务在Firebase内部登录用户
/// 
///包含操作响应的包装器。
公共异步任务,但它确实令人困惑。任何帮助都将不胜感激,谢谢

/// <summary>
/// Signin a user inside Firebase using the apple login service
/// </summary>
/// <returns>Wrapper containing the response of the operation.</returns>
public async Task<authenticationWrapper> appleLoginAsync()
{
    try
    {
       
        var authProvider = new FirebaseAuthProvider(new FirebaseConfig(PersistanceStorage.APIKEY));
        this.sessione = await authProvider.SignInWithOAuthAsync(FirebaseAuthType.Apple, TOKEN);

        FirebaseToken = Task.FromResult(sessione.FirebaseToken);
        return new authenticationWrapper()
        {
            message = "Ok",
            code = "200"
        };

    }
    catch (Exception err)
    {
        return new authenticationWrapper()
        {
            message = err.Message,
            code = "500"
        };
    }
}
/// <summary>
/// Start the authentication process inside apple services.
/// </summary>
/// <returns></returns>
public async Task authAsync() {
    WebAuthenticatorResult result = null;

    if (App.isIosPlatform() && DeviceInfo.Version.Major >= 13)
    {
        result = await AppleSignInAuthenticator.AuthenticateAsync();
    }
    else
    {
        throw new NotSupportedException("And now?")
    }

    Debug.WriteLine(result);
}