You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms借助Firebase实现Google登录兼容问题咨询

Xamarin Forms Firebase Google登录适配方案

你遇到的包不兼容报错是正常现象:Xamarin.GooglePlayServices.Auth、Xamarin.Firebase.Auth均为平台特定NuGet包,仅支持Android/iOS平台项目,本身就不兼容netstandard2.0,不需要尝试安装到共享库中。

以下是两种可落地的实现方案:

方案1:通过Xamarin Forms依赖服务实现(原生封装,兼容性最好)

第一步:共享库定义服务接口

在共享库项目中新建身份验证服务接口,不需要引用任何平台包:

public interface IGoogleAuthService
{
    /// <summary>
    /// 发起Google登录,返回用户Id Token
    /// </summary>
    Task<string> LoginAsync();
    /// <summary>
    /// 退出Google登录
    /// </summary>
    Task LogoutAsync();
}

在MainLogin.xaml的Google登录按钮点击事件中,直接调用依赖服务:

private async void GoogleLoginBtn_Clicked(object sender, EventArgs e)
{
    var authService = DependencyService.Get<IGoogleAuthService>();
    var userToken = await authService.LoginAsync();
    // 在此处补充token验证、跳转主页等后续逻辑
}

第二步:Android平台实现接口

确认Android项目已安装Xamarin.GooglePlayServices.Auth、Xamarin.Firebase.Auth包,google-services.json文件的生成操作设置为GoogleServicesJson。
在Android项目中新建接口实现类:

[assembly: Dependency(typeof(GoogleAuthService_Android))]
namespace MySignInApp.Droid.Implementations
{
    public class GoogleAuthService_Android : IGoogleAuthService
    {
        public async Task<string> LoginAsync()
        {
            // 在此处写入你参考的原生Android Google登录逻辑,返回获取到的Id Token即可
        }

        public Task LogoutAsync()
        {
            // 写入原生退出登录逻辑
            return Task.CompletedTask;
        }
    }
}

第三步:iOS平台实现接口

iOS端安装Xamarin.Firebase.iOS.Auth、Xamarin.Google.SignIn包,完成Firebase后台iOS应用配置后,同样在iOS项目中新建接口实现类:

[assembly: Dependency(typeof(GoogleAuthService_iOS))]
namespace MySignInApp.iOS.Implementations
{
    public class GoogleAuthService_iOS : IGoogleAuthService
    {
        public async Task<string> LoginAsync()
        {
            // 写入iOS原生Google登录逻辑,返回Id Token
        }

        public Task LogoutAsync()
        {
            // 写入iOS原生退出登录逻辑
            return Task.CompletedTask;
        }
    }
}

方案2:使用预封装的Forms兼容NuGet包(开发效率更高)

可以直接使用支持Xamarin Forms的Firebase认证封装包,比如Plugin.FirebaseAuth,该包已经完成了多平台适配,只需要在共享库和各平台项目中安装对应版本,即可直接在共享代码中调用Google登录相关API,不需要自行编写依赖服务实现。

内容的提问来源于stack exchange,提问作者Steven Sann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:15:03