Spaceship提交TestFlight审核出现API密钥权限禁止错误如何解决
问题原因说明
Spaceship启动时会默认读取当前shell环境中所有fastlane相关的环境变量,其中就包括FASTLANE_API_KEY_PATH、FASTLANE_APP_STORE_CONNECT_API_KEY这类API密钥配置项,优先级高于你后续手动输入的Apple ID登录凭证。即使你没有调用配置了密钥的lane,只要当前环境有这些变量,Spaceship就会自动加载对应密钥,部分底层接口请求会优先使用该密钥发起,才会出现你明明用了高权限Apple ID登录,仍然报低权限API key错误的情况。
你本地的仅开发者权限API密钥不具备提交TestFlight审核的权限,匹配报错的权限不足问题。
解决方法
场景1:希望完全使用Apple ID权限发起请求,不使用API密钥
启动Spaceship时临时清空相关环境变量即可,执行命令:
FASTLANE_API_KEY_PATH="" FASTLANE_APP_STORE_CONNECT_API_KEY="" fastlane spaceship
启动后再登录Apple ID,所有请求都会使用当前登录账号的权限,不会再复用本地的API密钥。
如果已经进入playground交互环境,也可以执行以下命令强制重置认证凭证:
Spaceship::ConnectAPI.login(apple_id: "你的Apple ID账号", use_portal: true, use_tunes: true)
场景2:希望切换为有权限的API密钥使用
启动Spaceship时指定有权限的API密钥路径即可,将路径替换为你实际的高权限(至少App Manager权限)API密钥文件路径:
FASTLANE_API_KEY_PATH="/路径/到/你的/高权限密钥.p8" fastlane spaceship
如果是直接配置密钥内容的场景,对应修改FASTLANE_APP_STORE_CONNECT_API_KEY环境变量的值即可。
补充说明
官方文档提到的API token登录不支持仅针对部分未完全适配的旧接口,当前TestFlight提交相关接口已经完成API密钥适配,只要你的密钥权限配置正确即可正常使用。
内容的提问来源于stack exchange,提问作者shim
相关产品推荐
相关产品推荐

