从 C# 以编程方式进行 Firebase 身份验证用户管理
Posted
技术标签:
【中文标题】从 C# 以编程方式进行 Firebase 身份验证用户管理【英文标题】:Firebase Auth User Management Programatically from C# 【发布时间】:2022-01-23 21:27:39 【问题描述】:我正在尝试通过我的代码在 Firebase Auth 上管理用户。我正在关注文档:https://cloud.google.com/identity-platform/docs/admin/manage-users
这是我制作的代码:
public async System.Threading.Tasks.Task<int> DeleteAsync(string email)
try
GoogleCredential cred = GoogleCredential.FromFile("path\\to\\downloadfile\\Mysandboxproject.json");
FirebaseApp.Create(new AppOptions()
Credential = cred,
ServiceAccountId = "mailserviceaccount@sandboxproject.iam.gserviceaccount.com",
);
//Get User To Remove:
UserRecord userRecord = await FirebaseAuth.DefaultInstance.GetUserByEmailAsync(email);
await FirebaseAuth.DefaultInstance.DeleteUserAsync(userRecord.Uid);
return 1;
catch (Exception ex)
throw ex;
但是当它转到 GetUserByEmailAsync 的行时,它永远不会返回......不会抛出异常,也不会返回用户,当然用户永远不会被删除。 我究竟做错了什么?我是否遗漏了与 firebase 通信的连接或配置相关的内容?提前致谢。
【问题讨论】:
服务帐号是否与 Firebase 在同一个项目中?它有正确的权限吗?尝试使用其他语言的功能以确定是您的配置还是底层 API 方法对您来说有多难? 旁白:我鼓励您考虑使用Application Default Credentials。它将使您的代码及其部署更简单。不要忘记export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/key.json
。
我刚刚在一个包含 Firebase Auth 的项目上尝试了等效的 Golang 代码。该项目有一个具有 Firebase Auth Admin 角色的服务帐户 (roles/firebaseauth.admin)。它奏效了。
【参考方案1】:
我无法重现您的问题;以下对我有用:
PROJECT=[[YOUR-PROJECT]] # Containing Firebase Auth
ACCOUNT=[[YOUR-ACCOUNT]] # Service Account name
EMAIL="$ACCOUNT@$PROJECT.iam.gserviceaccount.com"
gcloud iam service-accounts create $ACCOUNT \
--project=$PROJECT
gcloud iam service-accounts key create $PWD/$ACCOUNT.json \
--iam-account=$EMAIL
gcloud projects add-iam-policy-binding $PROJECT \
--member=serviceAccount:$EMAIL \
--role=roles/firebaseauth.admin
export GOOGLE_APPLICATION_CREDENTIALS=$PWD/$ACCOUNT.json
使用 C#:
using System;
using System.Threading;
using System.Threading.Tasks;
using FirebaseAdmin;
using FirebaseAdmin.Auth;
using Google.Apis.Auth.OAuth2;
namespace app
class Program
static async Task Main(string[] args)
FirebaseApp.Create();
var email = "[[EMAIL ADDRESS]]";
var record = await FirebaseAuth.DefaultInstance.GetUserByEmailAsync(email);
Console.WriteLine($"Successfully fetched user data: record.Uid");
然后:
dotnet new console
dotnet add package FirebaseAdmin --version 2.2.0
dotnet run
【讨论】:
谢谢 DazWilkin,我不确定我是否理解它,你在哪里运行或设置第一个代码片段。 gcloud 代码。 那是建立谷歌(云)项目和运行代码所需的服务帐户。它也记录在您包含的链接中:cloud.google.com/identity-platform/docs/install-admin-sdk以上是关于从 C# 以编程方式进行 Firebase 身份验证用户管理的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式获取 Firebase 中的注册用户列表 [重复]
在 iOS 上使用 Firebase SDK 作为全新设备开始