iOS问题记录 - 503 Service Temporarily Unavailable


前言

最近有个项目经历了大改动,本地测试没什么问题,于是准备通过打包机打包用于内部测试的包,然后问题就来了。

开发环境

  • Xcode: 16.1
  • Fastlane: 2.219.0

问题描述

问题出在登录苹果开发者账号的时候,错误日志如下:

[20:12:36]: Starting login with user 'xxx@xxx.xxx'
Available session is not valid anymore. Continuing with normal login.
[20:12:40]: <html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>Apple</center>
</body>
</html>

问题分析

首先检查苹果开发者账号是否正常可用,如果会员资格过期了那登录失败是正常的,可是我可以确定离过期还远着。

还有一个很常见的原因,苹果更新了开发者协议,要求开发者在继续使用其服务之前需要先同意最新条款,如果没同意也可能会出现登录失败的情况。

登录Apple Developer,果然协议有新的更新需要同意:

screenshot1

如果你在Xcode的证书管理中看到这样的提示:

screenshot2

说明也需要去Apple Developer同意更新后的开发者协议。如果不先同意,创建证书等操作会失败,提示:

Unable to process request - PLA Update available

PLAProgram License Agreement(开发者计划许可协议)的简写。

通过帐户持有人账号同意协议,再次给打包机下发打包任务。结果还是一样的报错,这是为什么?

再仔细看看输出日志,想找找还有没有什么其他可用信息,本来也没报什么希望,结果让我看到这个:

2.225.0 Improvements
This version has a required fix for authenticating with Apple via Apple ID. Apple started using their own variant of SRP (Secure Remote Password) using SHA-256 and 2048 bit hashing in the sign in flow. Any previous _fastlane_ versions will likely response a "503 Service Temporarily Unavailable" when authenicating with an Apple ID.

* [spaceship] New AppleID Auth with SRP (#26415) via Josh Holtz (@snatchev and @joshdholtz)

Fastlane每次打包都会输出当前版本之后的新版本更新日志,看样子当前最新版本2.225.0已经修复了该问题。那还能说啥呢?先升级到最新版本看看问题解决没:

gem install fastlane

升级完成再次打包,一切正常!

接下来看看是什么原因导致了该问题,根据Fastlane给出的更新日志,大致原因如下:

苹果更改了他们的登录流程,开始使用SRP(Secure Remote Password)协议。SRP协议是一种公开的安全协议,该协议不会在网络中传输密码(无论是否加密),而是通过密码的哈希值和一些随机数进行身份验证。这个有很多开源实现,苹果应该是根据自己的需要定制实现了SRP协议(their own variant of SRP)。

更多详情可以参考:

最后补充一点,Fastlane现在已经不建议通过苹果开发者账号和密码实现身份验证

原因很简单,账号密码登录是通过对苹果Web端网页抓包分析然后模拟登录,苹果只要对登录进行改动,Fastlane如果不适配就可能登录失败,当前问题就是这样导致的。同时,模拟登录有效期只有一个月左右,每次登录双重认证也麻烦。

建议通过 App Store Connect API 完成身份验证。

当然,不改继续用也问题不大,像我遇到问题的项目就是不改,老项目还能用就行,为什么要改?

解决方案

按以下步骤操作:

  1. 检查是否需要同意更新后的开发者协议

使用账户持有人账号登录Apple Developer,如果协议有更新请同意。

  1. 检查Fastlane版本是否低于2.225.0
fastlane -v

如果低于该版本,请执行命令升级到最新版本:

gem install fastlane

最后

如果这篇文章对你有所帮助,点赞👍收藏🌟支持一下吧,谢谢~


本篇文章由@crasowas发布于优快云。

### Nginx 出现 503 服务暂时不可用的原因分析 当遇到 Nginx 返回 `503 Service Temporarily Unavailable` 的情况时,可能由多种因素引起。此状态码表明服务器当前无法处理请求,通常是由于过载或正在进行维护[^2]。 配置中的速率限制设置不当可能导致此类问题的发生。具体来说,在 `nginx.conf` 文件中设置了单 IP 访问次数限制 (`limit_req_zone`) 和突发流量控制 (`burst`) 参数不合理会触发 503 错误响应[^3]。 ```bash http { ... limit_req_zone $binary_remote_addr zone=allips:20m rate=20r/s; } server { location / { ... limit_req zone=allips burst=50 nodelay; } } ``` 上述配置示例展示了如何调整这些参数来缓解高并发场景下的压力。适当增加每秒允许的最大请求数 (rate) 及其对应的突发阈值 (burst),有助于减少因瞬时高峰流量而产生的拒绝服务现象。 ### 解决方案建议 对于已经确认是由限流策略引发的问题- **优化限流规则**:重新评估并合理设定 `rate` 和 `burst` 参数值,确保既能有效防止恶意攻击又能满足正常用户的访问需求。 - **监控与日志记录**:启用详细的访问日志以便于后续排查异常行为;同时利用工具如 Prometheus 或 Grafana 实现实时性能监测预警机制。 - **增强后端服务能力**:检查上游应用服务器的状态,排除潜在的应用层瓶颈,比如 PHP-FPM 进程数不足等情况。 另外一种常见原因是后端应用程序崩溃或是资源耗尽导致 Nginx 无法成功转发请求给它处理。此时应重点审查 Web 应用本身的健康状况以及是否存在诸如死循环、内存泄漏之类的编程缺陷[^4]。 最后还可以考虑部署自定义的 503 页面以改善用户体验,即使是在发生故障期间也能提供友好提示而非默认的技术报错信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值