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

C#中基于Firebase的用户身份验证及用户数据获取咨询

在C#应用中通过邮箱密码验证Firebase用户并获取用户数据

一、客户端应用(如WPF/WinForms/.NET MAUI)

1. 安装依赖包

安装NuGet包 FirebaseAuth.NET

2. 初始化Firebase Auth

先在Firebase控制台获取你的Web API密钥,再初始化Auth实例:

using Firebase.Auth;

var authProvider = new FirebaseAuthProvider(new FirebaseConfig("你的Firebase Web API密钥"));

3. 验证邮箱密码并获取用户数据

调用验证方法,成功后直接获取用户基础信息,如需自定义数据可从数据库读取:

try
{
    // 验证邮箱密码
    var authResult = await authProvider.SignInWithEmailAndPasswordAsync("user@example.com", "userpassword");
    
    // 获取用户基础信息
    var user = authResult.User;
    Console.WriteLine($"用户ID: {user.LocalId}");
    Console.WriteLine($"邮箱: {user.Email}");
    Console.WriteLine($"显示名称: {user.DisplayName}");
    
    // 读取Realtime Database中的自定义用户数据(需安装FirebaseDatabase.NET包)
    var db = new FirebaseDatabase("你的Firebase数据库URL");
    var userData = await db.Child("users").Child(user.LocalId).OnceSingleAsync<Dictionary<string, object>>();
    
    if (userData != null)
    {
        Console.WriteLine("用户自定义数据:");
        foreach (var item in userData)
        {
            Console.WriteLine($"{item.Key}: {item.Value}");
        }
    }
}
catch (FirebaseAuthException ex)
{
    // 处理验证失败场景(如邮箱不存在、密码错误)
    Console.WriteLine($"验证失败: {ex.Message}");
}

二、服务端应用(如ASP.NET Core)

服务端无法通过Admin SDK直接验证密码,需调用Firebase REST API完成验证,再用Admin SDK获取用户数据:

1. 安装依赖包

安装FirebaseAdmin和System.Net.Http.Json NuGet包

2. 初始化Firebase Admin

使用Firebase控制台下载的服务账号密钥初始化:

using FirebaseAdmin;
using Google.Apis.Auth.OAuth2;

FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.FromFile("path/to/serviceAccountKey.json"),
});

3. 调用REST API验证并获取数据

using System.Net.Http.Json;

var httpClient = new HttpClient();
var requestBody = new
{
    email = "user@example.com",
    password = "userpassword",
    returnSecureToken = true
};

var response = await httpClient.PostAsJsonAsync("https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=你的Firebase Web API密钥", requestBody);

if (response.IsSuccessStatusCode)
{
    var authResponse = await response.Content.ReadFromJsonAsync<AuthResponse>();
    
    // 通过Admin SDK获取用户详细信息
    var userRecord = await FirebaseAuth.DefaultInstance.GetUserAsync(authResponse.LocalId);
    Console.WriteLine($"用户ID: {userRecord.Uid}");
    Console.WriteLine($"邮箱: {userRecord.Email}");
    Console.WriteLine($"创建时间: {userRecord.UserMetadata.CreationTimestamp}");
    
    // 读取Realtime Database中的自定义数据
    var db = FirebaseDatabase.DefaultInstance;
    var userData = await db.GetReference($"users/{userRecord.Uid}").GetValueAsync();
    if (userData.Exists)
    {
        Console.WriteLine("用户自定义数据:");
        Console.WriteLine(userData.Value.ToString());
    }
}
else
{
    var error = await response.Content.ReadFromJsonAsync<ErrorResponse>();
    Console.WriteLine($"验证失败: {error.Error.Message}");
}

// 定义所需模型类
public class AuthResponse
{
    public string LocalId { get; set; }
    public string IdToken { get; set; }
    public bool Registered { get; set; }
}

public class ErrorResponse
{
    public ErrorDetails Error { get; set; }
}

public class ErrorDetails
{
    public string Message { get; set; }
}

注意事项

  • 确保Firebase项目已开启邮箱/密码登录方式(控制台→认证→登录方法)
  • 服务端使用的服务账号密钥需具备认证和数据库访问权限(默认密钥即可)
  • 客户端应用请勿硬编码API密钥,建议通过配置文件管理

内容的提问来源于stack exchange,提问作者Shah Muhammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:15:34