Apple授权登录开发流程
Apple授权登录开发流程
iOS端需要完成的工作
确保项目已启用Sign in with Apple功能
在Xcode中开启Capabilities中的Sign in with Apple选项
在开发者账号中为App ID配置Sign in with Apple权限
实现ASAuthorizationControllerDelegate协议
创建ASAuthorizationAppleIDRequest请求对象
处理授权成功后的回调,获取用户信息
从回调中获取以下关键数据:
userIdentifier - 苹果提供的唯一用户标识符
email - 用户邮箱(可能需要验证)
fullName - 用户姓名(首次授权时提供)
authorizationCode - 短期有效的授权码
identityToken - JWT格式的身份令牌
将获取到的identityToken和userIdentifier发送至后端服务器
处理用户取消或授权失败的情况
后端需要完成的工作
验证来自iOS端的identityToken
使用苹果提供的公钥验证JWT签名有效性
检查token中的iss字段是否为https://appleid.apple.com
验证aud字段是否与应用的Bundle ID匹配
检查exp字段确保token未过期
建立用户账号体系
将苹果提供的userIdentifier与本地用户系统关联
处理首次登录用户的账号创建流程
管理用户邮箱变更等特殊情况
实现会话管理
生成应用自身的访问令牌
维护登录状态和安全会话
安全注意事项
始终在后端验证identityToken
不要依赖仅来自客户端的验证结果
妥善存储userIdentifier作为唯一关联标识
处理用户可能在苹果账号设置中撤销授权的情况
特殊情况处理
处理用户选择隐藏邮箱的情况
应对苹果返回的代理邮箱地址
实现邮件转发服务(如需要)
处理用户后续登录时更改姓名邮箱的情况
