我在运行 graphql 的 Cloud Run 服务器中使用 Firebase 管理员身份验证作为身份验证和授权机制(客户端发送令牌,服务器将验证和检查自定义声明中包含的用户角色)。admin auth 模块在尝试调用 verifyIdToken 时会抛出错误。不过,从云函数调用管理员身份验证方法可以完美地工作。
FirebaseAuthError:必须使用证书凭据初始化应用程序或将您的 Firebase 项目 ID 设置为 GOOGLE_CLOUD_PROJECT 环境变量以调用 verifyIdToken()。
我曾尝试使用应用引擎服务帐户(与云功能使用的服务帐户相同)并使用 firebase 管理员角色创建新的服务帐户作为我的云运行服务帐户,但无济于事。我可以通过在我的 Dockerfile 中提供凭证文件(从 firebase 控制台生成)并设置环境变量 GOOGLE_APPLICATION_CREDENTIALS 来使其运行,但我想将它用作最后的手段,除了它非常难看。
下面是我的 Apollo 服务器的上下文函数
import { Context, ContextFunction } from 'apollo-server-core';
import { ExpressContext } from 'apollo-server-express/dist/ApolloServer';
import { firebase } from '../config';
import { batchLoaders } from './batchLoaders';
export const context: ContextFunction<ExpressContext, Context> = async ({
req
}) => {
const token = req.headers.authorization || '';
const defaultContext = { batchLoaders …Run Code Online (Sandbox Code Playgroud) firebase firebase-authentication firebase-admin google-cloud-run