System & Services 进阶 20m
了解 Sign in with Apple 在工作与教育场景的应用
Discover Sign in with Apple at Work & School
2022年6月6日
一句话判断
Sign in with Apple 现在支持 Managed Apple ID,加上全新的 Roster API,教育和工作场景下的身份集成和班级数据获取变得前所未有的简单。
这场 Session 讲了什么
Sign in with Apple 最初只支持个人 Apple ID。这次更新将其扩展到 Managed Apple ID——由组织(学校或企业)通过 Apple School Manager 或 Apple Business Manager 管理的账号。这意味着学生、教师和员工可以用他们的 Managed Apple ID 一键登录你的 App。
Session 分三个部分。第一部分介绍 Sign in with Apple at Work & School 的用户体验:当用户使用 Managed Apple ID 时,系统会展示专门的欢迎界面,并且始终共享用户名和邮箱——不像个人 Apple ID 可以选择隐藏邮箱。第二部分介绍 Roster API,这是一个 REST API,让 App 能通过 OAuth 2.0 获取 Apple School Manager 中的用户和班级数据。第三部分讲 IT 管理员如何控制数据访问权限。
值得深挖的点
- Managed Apple ID 的行为差异:与个人 Apple ID 相比,Managed Apple ID 登录时姓名和邮箱始终可见(不支持隐藏邮箱功能)。部分账号可能没有邮箱地址(比如低年级学生),你的 App 需要处理这种情况。
- Roster API 的 OAuth 2.0 流程:IT 管理员需要授权你的 App 访问组织数据。你需要在 Developer Portal 注册 Organizational Data Sharing 的 scope(用户访问或班级访问),然后通过标准 OAuth 授权码流程获取 access token。
- 零额外代码适配:如果你的 App 已经支持 Sign in with Apple,Managed Apple ID 的支持是自动的,不需要额外代码。只是收到的 credential 中姓名和邮箱一定会包含值。
- Organizational Data Sharing:IT 管理员在 Apple School Manager 中控制哪些 App 可以访问组织数据。管理员和站点管理员角色才有权审批。
代码片段
// 客户端:Sign in with Apple 处理逻辑不变
// 当用户使用 Managed Apple ID 时,fullName 和 email 始终有值
func authorizationController(
controller: ASAuthorizationController,
didCompleteWithAuthorization authorization: ASAuthorization
) {
guard let credential = authorization.credential
as? ASAuthorizationAppleIDCredential else { return }
// 对于 Managed Apple ID,这些值始终存在
let fullName = credential.fullName
let email = credential.email // 可能为 nil(低年级学生)
// 使用这些信息进行访问控制
// 比如根据组织身份分配不同的权限
}
// 服务端:调用 Roster API 获取班级数据
// 1. 通过 OAuth 2.0 获取 access token
// 2. 调用 REST 端点
let url = URL(string: "https://api.roster.apple.com/v1/classes")!
var request = URLRequest(url: url)
request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
// 返回的 JSON 包含班级 ID、名称、学生列表等
// 可以用于自动配置你的教育 App
最佳实践
- 做好邮箱可能为空的准备,用其他标识符(如 user ID)作为主要关联键
- 在 Developer Portal 中只请求你真正需要的 scope(用户访问 vs 班级访问)
- Roster 数据应该缓存到本地,不要每次启动都请求
- IT 管理员审批流程需要友好的引导文档,这是 Adoption 的关键环节
- 测试时使用 Apple School Manager 的沙盒环境
还有什么值得关注
- “Enhance your Sign in with Apple experience” 介绍了如何防止账号重复和检测 credential 变化
- “Meet passkeys” 介绍了下一代密码替代方案,与 Sign in with Apple 互补
- Roster API 目前仅支持 Apple School Manager(教育场景),企业场景(Apple Business Manager)的支持后续可能会扩展
- 如果你的 App 在教育领域,配合 Classroom 和 Schoolwork 可以构建更完整的生态
WWDC 2022