【问题标题】:APK upload error: Permission denied 403 the caller does not have permissionAPK上传错误:Permission denied 403 调用者没有权限
【发布时间】:2022-08-03 18:55:14
【问题描述】:

我正在尝试使用 Gradle 将 APK 上传到 Firebase,如下所述

./gradlew assembleRelease appDistributionUploadRelease -Dhttps.proxyHost=10.xx.xx.xx -Dhttps.proxyPort=8080 \"-Dhttps.nonProxyHosts=localhost\" --stacktrace

但是,它失败并出现以下错误

错误

Caused by: com.google.api.client.http.HttpResponseException: 403 Forbidden
POST https://firebaseappdistribution.googleapis.com/upload/v1/projects/xxxxxxxxx/apps/1:xxxxxxxxx:android:0a4f47b9fe3f6250/releases:upload
{
  \"error\": {
    \"code\": 403,
    \"message\": \"The caller does not have permission\",
    \"status\": \"PERMISSION_DENIED\"
  }
}

我提到了这个link 来解决这个问题,但没有运气

  1. 升级 Gradle plugin 以使用最新版本 build.gradle

  2. client_email 提供以下权限服务帐户

    • Firebase 管理员
    • Firebase 应用分发管理员
    • Firebase 应用分发管理 SDK 服务代理
    • 所有者
    • 服务帐户用户

    我在 SO 中看到了类似的问题,但不确定我错过了什么

    标签: android gradle


    【解决方案1】:

    有同样的问题,在我的情况下,来自 API 调用的项目 ID 与我拥有角色 Firebase App Distribution Admin 的服务帐户的项目 ID 不同。

    因此,请仔细检查此 URL POST https://firebaseappdistribution.googleapis.com/upload/v1/projects/xxxxxxxxx/ 中的 xxxxxxx 是否与您拥有用于访问此 API 的 SA 的位置完全相同。

    笔记:在日志中查看 API 调用就足以将 --info 选项添加到您的 ./gradlew 命令,例如./gradlew --debug <task>

    【讨论】: