使用Google API Python Client调用Firebase App Distribution遇HTTP 400错误
解决Firebase App Distribution API 400无效参数错误
出现400错误通常是参数格式或权限配置问题,以下是具体排查和解决步骤:
1. 服务账号凭证缺少API访问权限范围
默认生成的服务账号凭证不会自动包含Firebase App Distribution API的访问权限,必须手动指定所需的权限范围:
修改凭证初始化代码,添加scopes参数:
credentials = service_account.Credentials.from_service_account_file( service_account_file, scopes=["https://www.googleapis.com/auth/firebase.appdistribution"] )
2. 检查Parent参数格式是否正确
你当前使用的app_id是Firebase控制台显示的标准格式(1:xxx:android:xxx),这个格式本身是正确的,但需要确认:
project_id是服务账号JSON文件中的project_id(字符串格式,如my-firebase-project-abc123),而非项目编号(纯数字)- 拼接后的
parent路径格式严格为projects/{project_id}/apps/{app_id},没有多余的符号或空格
3. 额外排查项
- 确认服务账号已在Firebase控制台添加为项目成员,且授予了
Firebase App Distribution Admin及以上权限(你用的所有者权限没问题,但可以再核对) - 前往Google Cloud Console的API库,搜索并启用
Firebase App Distribution API
修改后的完整脚本示例
import os from google.oauth2 import service_account from googleapiclient.discovery import build from googleapiclient.errors import HttpError script_dir = os.path.dirname(os.path.abspath(__file__)) service_account_file = os.path.join(script_dir, 'service-account.json') # 添加API所需的权限范围 credentials = service_account.Credentials.from_service_account_file( service_account_file, scopes=["https://www.googleapis.com/auth/firebase.appdistribution"] ) project_id = credentials.project_id app_id = "1:310501947997:android:4f5183af1eddc4004eabb4" service = build('firebaseappdistribution', 'v1', credentials=credentials) try: parent = f"projects/{project_id}/apps/{app_id}" app_releases = service.projects().apps().releases().list(parent=parent).execute() print(app_releases) except HttpError as e: # 打印更详细的错误内容,方便进一步排查 print(f'错误状态码: {e.status_code}') print(f'错误详情: {e.content.decode("utf-8")}')
内容的提问来源于stack exchange,提问作者timr
相关产品推荐
相关产品推荐

