使用服务帐户凭据模式拒绝Firebase分发android应用程序的权限

使用服务帐户凭据模式拒绝Firebase分发android应用程序的权限,android,firebase,gradle,google-fabric,firebase-app-distribution,Android,Firebase,Gradle,Google Fabric,Firebase App Distribution,我正在尝试从Fabric迁移到Firebase,因为Fabric在2020年3月31日之后将不可用 我已经完成了第一步:向gradle添加插件和依赖项,添加分析json文件,甚至崩溃报告,所有这些似乎都是正确的,因为我可以在Firebase控制台中看到数据(分析和崩溃) 但我并没有那么幸运地将应用程序分发系统从Beta+Fastlane迁移到Firebase。我正在尝试“使用Gradle将Android应用程序分发给测试人员”的选项。我已经添加了插件和依赖项,添加得很好,因为我可以运行gradl

我正在尝试从Fabric迁移到Firebase,因为Fabric在2020年3月31日之后将不可用

我已经完成了第一步:向gradle添加插件和依赖项,添加分析json文件,甚至崩溃报告,所有这些似乎都是正确的,因为我可以在Firebase控制台中看到数据(分析和崩溃)

但我并没有那么幸运地将应用程序分发系统从Beta+Fastlane迁移到Firebase。我正在尝试“使用Gradle将Android应用程序分发给测试人员”的选项。我已经添加了插件和依赖项,添加得很好,因为我可以运行gradle任务
/gradlew appdistributionPloadMyVariant

我正在从Google云平台控制台为名为
firebase adminsdk
的用户获取
serviceCredentialsFile
(我认为这个名称是由firebase系统给出的)正确的项目。用户的电子邮件如下所示
firebase adminsdk-xxx@my_project.iam.gserviceaccount.com
,它与我在Firebase控制台->设置->服务帐户->Firebase管理SDK中看到的相同

我已经下载了带有凭据的json文件,gradle可以找到它,因为如果有人故意为该文件输入错误的路径url,它会记录一个
服务凭据文件不存在。根据我上面提到的几行内容,此文件的内容对于
client\u email
project\u id
具有正确的值

但是我得到一个403错误。我粘贴了执行任务
/gradlew AppDistributionPloadMyVariant--info
(我隐藏了一些私人信息)时获得的一些信息:

Task':app:appDistributionPloadMyVariant'不是最新的,因为:
尽管执行了操作,任务仍未声明任何输出。
在/MyFolder/app/build/outputs/APK/qa/qaType/app-qa-qaType.APK找到APK。
正在将APK上载到Firebase应用程序分发。。。
从google服务插件的输出中获取appId
--------------请求--------------
邮递https://oauth2.googleapis.com/token
接受编码:gzip
用户代理:谷歌HTTP Java客户端/1.28.0(gzip)
内容类型:application/x-www-form-urlencoded;字符集=UTF-8
内容长度:808
curl-v--compressed-X POST-H'Accept-Encoding:gzip'-H'用户代理:Google HTTP Java客户端/1.28.0(gzip)'-H'内容类型:application/X-www-form-urlencoded;字符集=UTF-8'-d'@-'--'https://oauth2.googleapis.com/token'应用程序分发无法获取应用程序信息:[403]调用方没有权限
我还尝试从gradle文件传递
appId
值,结果相同


知道吗?

错误“[403]呼叫方没有权限。”是由权限问题引起的。​​​​​​​

您是否可以尝试了解如何创建服务帐户以及从何处下载json,看看它是否有效

还欢迎您联系以了解更多信息。:)

请尝试跑步

firebase logout
然后再次登录(或使用令牌)


我也有同样的问题,并且按照上面提到的所有其他步骤都没有成功。但是,当我使用调试标志运行firebase appdistribution:distribute--debug foo时,我注意到我仍然登录到另一个firebase实例,这似乎是导致问题的原因。

服务帐户的角色是:“firebase App Distribution Admin SDK service Agent”:

使用Admin SDK对Firebase应用程序发行版进行读写访问


或者作为个人。

谢谢@Jing Li,它正在创建服务帐户,就像您建议的链接一样。谢谢。Firebase应用程序发行版说,
在此处添加Firebase Quality Admin角色
[这不起作用。我们必须使用命令行,使用gradle将Firebase Admin的最低角色/权限添加到成功的应用程序发行中。请检查。我认为您的角色至少应该是编辑器,以消除此错误。
firebase logout