通过 Apple 登录:完整实施指南
通过 Apple 登录(SIWA)对于大多数有第三方登录的应用是必需的。本指南涵盖何时需要、如何正确实施以及如何避免最常见的拒绝原因。
简单规则
如果你的应用有任何第三方登录(Google、Facebook、Twitter 等),你也必须提供通过 Apple 登录。唯一的例外是专门使用你自己认证系统的应用或某些企业/教育应用。
为什么 Apple 要求这样做
Apple 在 2019 年推出了通过 Apple 登录,并在 2020 年使其成为强制性的。理由很简单:如果你让用户使用 Google 或 Facebook 账户登录,Apple 希望用户有一个注重隐私的替代选项:
隐私优先
用户可以使用 Apple 的私人中继隐藏真实电子邮件地址
无追踪
Apple 不会像社交登录提供商那样跨应用追踪用户
无缝体验
在 Apple 设备上使用 Face ID/Touch ID 一键登录
何时需要通过 Apple 登录
指南 4.8 明确规定了何时必须实施通过 Apple 登录。以下是明确的细分:
| 你的应用的登录选项 | 是否需要 SIWA? |
|---|---|
| Google 登录 | 是,必需 |
| Facebook 登录 | 是,必需 |
| 任何其他社交登录(GitHub、LinkedIn 等) | 是,必需 |
| 仅电子邮件+密码(你自己的系统) | 不需要 |
| 仅手机号认证 | 不需要 |
| 无需认证(应用无需登录即可使用) | 不需要 |
| 企业应用(MDM 分发) | 豁免 |
| 使用学校凭据的教育应用 | 豁免 |
正确处理用户数据
SIWA bug 的最大来源是误解用户数据何时提供。这是关键规则:
⚠️ 关键:电子邮件和姓名只发送一次
Apple 只在第一次登录时发送用户的电子邮件和姓名。如果你未能捕获并存储这些数据,你将永远无法再次获得该用户的这些信息。
在后续登录中,只提供 userIdentifier。
💡 最佳实践:立即持久化
当你收到授权回调时,在做任何其他事情之前立即将电子邮件和姓名发送到你的服务器。不要等待流程其他部分的"成功"响应——如果任何步骤失败,你将永远丢失这些数据。
账户删除要求
从 2022 年 6 月起,支持账户创建的应用也必须支持账户删除。这适用于所有认证方法,包括通过 Apple 登录。
⚠️ 指南 5.1.1(v) - 账户删除
"支持账户创建的应用也必须提供账户删除功能。此功能必须易于找到,不能要求联系客服,并且必须删除账户及相关数据。"
你必须实施的内容
- 应用内删除选项 - 必须可从设置/账户访问,不能埋藏或需要联系客服
- 实际数据删除 - 从你的服务器删除用户数据(或在 30 天内安排删除)
- 撤销 Apple 令牌 - 你必须撤销通过 Apple 登录的刷新令牌
常见通过 Apple 登录拒绝
未提供通过 Apple 登录
"你的应用使用第三方登录服务但未提供通过 Apple 登录。"
修复:添加通过 Apple 登录作为与其他社交登录按钮同等的选项。
通过 Apple 登录不够醒目
"通过 Apple 登录必须与其他登录选项同等醒目地显示。"
修复:使 SIWA 按钮与其他登录按钮大小和视觉权重相同。不要将其隐藏在底部或使其更小。
无账户删除
"你的应用支持账户创建但没有提供让用户删除账户的方式。"
修复:在设置/账户中添加"删除账户"选项。实施实际数据删除和 Apple 令牌撤销。
通过 Apple 登录清单
实施
- 在 Xcode 中启用通过 Apple 登录功能
- 使用系统 SignInWithAppleButton 组件
- 首次登录时持久化电子邮件/姓名
按钮放置
- 与其他登录选项同等醒目
- 与其他社交登录按钮大小相同
- 使用批准的按钮样式(黑色/白色/轮廓)
账户删除
- 设置中有删除账户选项
- 已实施实际数据删除
- 删除时撤销 Apple 令牌
常见问题
我可以移除其他社交登录只使用电子邮件/密码吗?
可以。如果你的应用只使用电子邮件/密码认证(你自己的系统),不需要 SIWA。但是,移除社交登录选项可能会降低注册转化率。
用户使用了"隐藏我的电子邮件"——我如何联系他们?
向私人中继地址发送电子邮件。Apple 会转发到他们的真实邮箱。你必须在 Apple Developer Portal 的服务 → 通过 Apple 登录进行电子邮件通信中配置你的发送域名。
我在首次登录时错过了捕获电子邮件。我能再次获取吗?
不能。Apple 只发送一次电子邮件/姓名。用户需要到设置 → Apple ID → 密码与安全性 → 使用你 Apple ID 的 App,移除你的应用,然后再次登录。你无法通过编程触发此操作。