6

我在 Fastlane Fastfile 中设置了 Firebase 应用分发功能来分发我的 iOS 应用的 beta 版本。它工作正常,但突然开始显示错误。

这就是我的车道的样子。

lane :distribute_beta do |options|
        
        sync_code_signing_adhoc()
        update_build_number_of_all_frameworks() 
        build_ios_app_adhoc()

        firebase_app_distribution(
            app: "<app ID here>",
            testers: "<tester emials here>",
            release_notes: options[:release_note],
            firebase_cli_path: "/usr/local/bin/firebase"
        )
end  

当我运行这条车道时,它显示错误

the server responded with status 403

在步骤:firebase_app_distribution

日志还说对谷歌的身份验证成功。

 Authenticating with GOOGLE_APPLICATION_CREDENTIALS environment variable: /<path to cred>/<cred_file_name>.json
  Authenticated successfully.

以下是围绕“步骤:firebase_app_distribution”的完整错误

[17:11:04]: ---------------------------------------
[17:11:04]: --- Step: firebase_app_distribution ---
[17:11:04]: ---------------------------------------
[17:11:04]: Authenticating with GOOGLE_APPLICATION_CREDENTIALS environment variable: /<path to cred>/<cred_file_name>.json
[17:11:04]:  Authenticated successfully.
+------------------------------------+---------------------------------------------+
|                                   Lane Context                                   |
+------------------------------------+---------------------------------------------+
| DEFAULT_PLATFORM                   | ios                                         |
| PLATFORM_NAME                      | ios                                         |
| LANE_NAME                          | ios distribute_beta                         |
| SIGH_PROFILE_TYPE                  | ad-hoc                                      |
| MATCH_PROVISIONING_PROFILE_MAPPING | {"<my bndle ID>"=>"match AdHoc              |
|                                    | <my bundle ID>"}                            |
| BUILD_NUMBER                       | 107                                         |
| IPA_OUTPUT_PATH                    | /Users/my_user_name/Repository/App/App|
|                                    | y/App.ipa                                   |
| XCODEBUILD_ARCHIVE                 | /Users/my_user_name/Library/Developer/Xcode/A|
|                                    | rchives/2021-01-08/App 2021-01-08           |
|                                    | 17.09.08.xcarchive                          |
| DSYM_OUTPUT_PATH                   | /Users/my_user_name/Repository/App/App           |
|                                    | y/App.app.dSYM.zip                          |
+------------------------------------+---------------------------------------------+
[17:11:06]: the server responded with status 403

+------+-----------------------------+-------------+
|                 fastlane summary                 |
+------+-----------------------------+-------------+
| Step | Action                      | Time (in s) |
+------+-----------------------------+-------------+
| 1    | default_platform            | 0           |
| 2    | Switch to ios               | 0           |
|      | sync_code_signing_adhoc     |             |
|      | lane                        |             |
| 3    | sync_code_signing           | 18          |
| 4    | Switch to ios               | 0           |
|      | update_build_number_of_all  |             |
|      | _frameworks lane            |             |
| 5    | increment_build_number      | 1           |
| 6    | commit_version_bump         | 0           |
| 7    | Switch to ios               | 0           |
|      | build_ios_app_adhoc lane    |             |
| 8    | build_ios_app               | 126         |
|    | firebase_app_distribution   | 1           |
+------+-----------------------------+-------------+

[17:11:06]: fastlane finished with errors

我怎样才能解决这个问题?

4

2 回答 2

9

通常,当您收到特定消息时,这意味着 Firebase 刷新令牌不再有效。

因此,当您提交应用程序时,有时您必须指定 Firebase 刷新令牌:

...
firebase_app_distrubution(
  ...
  firebase_cli_token: "<YourFirebaseRefreshToken>"
)
...

您可以从此处获取此令牌。如果您的脚本突然开始失败,这可能意味着生成此(或任何其他身份验证令牌)的人已从 Firebase 项目中删除。

如果您得到一个403肯定意味着有人从您的 Firebase 项目中删除,或者有人在 Firebase 控制台上删除/重新生成了一个令牌。

于 2021-01-12T22:51:22.787 回答
1
  1. 只需在控制台上运行以下命令:

    curl -sL https://firebase.tools | bash
    
  2. 然后,在浏览器上进行身份验证

  3. 然后运行

    firebase login:ci
    
  4. 成功后,您将打印出新的 cli 令牌,如下所示:

正在等待认证...

✔ 成功!使用此令牌登录 CI 服务器:

1//here_will_be_your_new_token

示例:firebase deploy --token "$FIREBASE_TOKEN"
于 2021-09-16T11:21:35.823 回答