尽管将更新的服务帐户信息传递给admin.initializeApp,但在部署Firebase功能时仍使用先前的GCP服务帐户

问题描述

我将Firebase功能一个Firebase帐户切换到另一个帐户。 我已经重新运行CompletableFuture<String> task1 = CompletableFuture.supplyAsync(Test::method1); CompletableFuture<String> task2 = CompletableFuture.supplyAsync(Test::method2); CompletableFuture<String> task3 = CompletableFuture.supplyAsync(Test::method3); String concat = Stream.of(task1,task2,task3).map(CompletableFuture::join).collect(Collectors.joining()); System.out.println(concat); 。 我已经将新的服务帐户配置添加到项目中,并将其传递给firebase init。我已经通过CLI登录了GCP,并且还运行了admin.initializeApp

尽管如此,每当我尝试运行firebase login:ci时,都会遇到错误

功能部署所需的缺少权限。您必须对服务帐户@ appspot.gserviceaccount.com拥有iam.serviceAccounts.ActAs权限。

知道这是怎么回事吗?

解决方法

这与用于初始化Firebase Admin SDK的服务帐户无关。该错误与您用于通过Firebase CLI登录的Google帐户权限不足有关。它无权部署到Cloud Functions。您应该先退出,然后使用具有权限的帐户(通常是“编辑者”角色)重新登录,或者向要使用的帐户添加适当的权限。

,

如果要迁移到新的Firebase项目/帐户,则必须在运行firebase init之前删除项目的现有.firebaserc和firebase.json文件-这将确保您使用的是更新的项目配置。