firebase 函数缺少 oauth2 凭据

Posted

技术标签:

【中文标题】firebase 函数缺少 oauth2 凭据【英文标题】:firebase functions missing oauth2 credentials 【发布时间】:2020-09-26 12:12:18 【问题描述】:

我在 firebase 云函数中创建了一个可调用函数,但每当我调用它时都会出现此错误

未捕获(承诺中)FirebaseError:消息:为用户订阅 FCM 时出现问题:请求缺少所需的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。见https://developers.google.com/identity/sign-in/web/devconsole-project。 (消息/令牌订阅失败)

我已经看到了如何在 firebase 中调用可调用函数的示例 https://firebase.google.com/docs/functions/callable#call_the_function 但它不起作用

我也试过了,但仍然遇到同样的错误 https://cloud.google.com/functions/docs/securing/managing-access-iam#allowing_unauthenticated_function_invocation

这是我调用函数的方式

const invite = firebase.functions().httpsCallable('inviteUser');
... // some other code
invite( email, organization: data.name )

后端代码

export const inviteUser = functions.https.onCall(( email, organization ) => 
  try 
    sendMail(email, organization);
    return 'success'
   catch(e) 
    return e;
  
)

注意我正在使用打字稿

【问题讨论】:

我也使用 firebase auth 登录了用户 您使用的是来自 admin.initializeApp(functions.config().firebase); 的 Firebase 实例吗?您看到的错误表明您没有提供使用任何身份验证凭据创建的 firebase 实例。 是的,我在 firebase 函数中做到了这一点,错误发生在前端,我实际上并没有使用任何 firebase 管理函数,所以我怀疑这种情况 我没有使用 firebase fcm 那么为什么我会出错呢? 【参考方案1】:

修复它,这是因为我在 Firebase 设置中生成了一个 Web 应用程序令牌 - 云消息传递。好吧,我没有使用云消息传递,但我必须设置 firebase 消息传递才能使其正常工作并使用 vapid 密钥。

【讨论】:

以上是关于firebase 函数缺少 oauth2 凭据的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 云函数调用时,OAuth2 访问令牌交换失败

如何使用Firebase接入Google登录?

为啥最新的 Firebase 服务不能再加载默认凭据

Firebase“用户缺少没有参数的构造函数”

使用 firebase-admin。服务帐户凭据有啥用途?

Firebase Cloud Functions:无法从文件中读取凭据