Authentication Error

未关闭
#503 2 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
冷清
技术栈
csharp, firebase

调研方向

从第 67 行的 FirebaseClient.cs 调用开始,跟踪它经过 FirebaseMessaging.SendAsync 和 ErrorHandlingHttpClient.SendAndReadAsync 的流程。将 FirebaseApp 的 credential 设置与 issue 中显示的 scoped credential access-token 检查进行比较。完成的标准是确定请求缺少身份验证的原因,并确认修正后的 messaging 请求成功。

由索引模型根据 Issue 内容生成。

描述

FirebaseAdmin: 3.4.0
.NET Version: 10

My firebase messaging stopped working all suddenly, no code changes, Firebase Messaging API enabled, Service Account credential is active.

Setup code in my service

var credential = CredentialFactory.FromFile<ServiceAccountCredential>(options.Value.FIREBASE_ADMIN_FILE);
_app = FirebaseApp.Create(new AppOptions()
{
    Credential = credential.ToGoogleCredential(),
});
_messaging = FirebaseMessaging.GetMessaging(_app);

When attempting to send a message, I now get the errors below:

FirebaseAdmin.Messaging.FirebaseMessagingException: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.

at FirebaseAdmin.Util.ErrorHandlingHttpClient`1.SendAndReadAsync(HttpRequestMessage request, CancellationToken cancellationToken)

at FirebaseAdmin.Util.ErrorHandlingHttpClient`1.SendAndDeserializeAsync[TResult](HttpRequestMessage request, CancellationToken cancellationToken)

at FirebaseAdmin.Messaging.FirebaseMessagingClient.SendAsync(Message message, Boolean dryRun, CancellationToken cancellationToken)

at FirebaseAdmin.Messaging.FirebaseMessaging.SendAsync(Message message, Boolean dryRun, CancellationToken cancellationToken)

at FirebaseAdmin.Messaging.FirebaseMessaging.SendAsync(Message message, CancellationToken cancellationToken)

at NoWow.EmailService.FirebaseClient.NotifyAsync(Guid userId, String token, String title, String body, Dictionary`2 data, CancellationToken cancellationToken) in /src/src/NoWow.EmailService/FirebaseClient.cs:line 67

To confirm my credentials is valid I did:

var credential = CredentialFactory.FromFile<ServiceAccountCredential>(options.Value.FIREBASE_ADMIN_FILE).ToGoogleCredential().CreateScoped(
    "https://www.googleapis.com/auth/firebase.messaging",
    "https://www.googleapis.com/auth/cloud-platform");
var accessTokenForRequestAsync = await credential.UnderlyingCredential.GetAccessTokenForRequestAsync();
Console.WriteLine("Access token: {0}", accessTokenForRequestAsync);

The above test returned an access token confirming my credentials are valid

主要语言
C#
星标
407
派生
147
平均合并
2 天 10 小时
30 天内合并 PR
12

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

firebase/firebase-admin-dotnet 的其他 Issue

查看 firebase/firebase-admin-dotnet 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。