霸王条款规定,如果你的App中包含或涉及到第三方登录(例如:QQ登陆、微信登陆等),就必须接入苹果登陆,如果不适配苹果推出的Sign In With Apple审核将会被拒绝。
一、授权Apple登录(整体交互过程)
其实和平时的一些第三方登陆一样,通过授权,可以拿到用户名,邮箱地址,用户ID等信息,接入 Sign In With Apple 后, 应用程序或网站中显示“ 通过Apple登录”按钮,意味着可以使用他们已有的Apple ID进行点击或登录,而无需填写表格,验证电子邮件地址和选择密码等操作;提供了一种新的,更私密的方式登陆。
二、配置开发证书权限
1、首先手机必须是iOS 13(包含iOS 13)以上的iOS系统
2、项目 Bundle ID(Bundle identifier)勾选 Sign In With Apple 功能,然后保存
三、Xcode 配置 Singing & Capabilities
注意:(Debug 和 Release)模式都要配置,否则打出正式包不能调出授权弹窗 ,亲身经历!!!!
四、添加依赖库
五、代码集成
1.引入头文件
1 | #import <AuthenticationServices/AuthenticationServices.h> |
2.添加代理
1 | <ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding> |
3.添加“ 通过Apple登录”按钮 ,必须用系统的按钮样式
1 | if (@available(iOS 13.0, *)) { |
4.点击“ 通过Apple登录”按钮执行方法
1 | if (@available(iOS 13.0, *)) { |
5.授权的代理方法
1 | #pragma mark - ASAuthorizationControllerDelegate |
6.版本支持
苹果授权登录是iOS13之后出现的新功能,所以在用这个功能的时候,需要进行版本检查。一般类似这样:
1 | if (@available(iOS 13.0, *)) { |
六.注意事项
1.首次登录会返回所有参数,包括全名、邮箱等(如果玩家登录时拒绝提供真实的邮箱账号,苹果会生成虚拟的邮箱账号),二次登录只会返回 UserID 和 授权码,其它信息不再返回!
2.同一个开发者账号下所有APP,同一个apple id登陆时,获取的UserID 是一样的。
3.两个开发者账号下的应用,同一个apple id登陆时,获取的 UserID 不一样
4.NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, 系统在苹果账号登出时通知,此时应用如果是苹果登陆的用户,有没有必要也登出账号?
5.如果打开登录界面时,设备的 iCloud Keychain 有 apple id 账号可用时,可以弹窗让用户选择 iCloud Keychain 里的账号来进行登陆。
七.运行效果
- 本文作者: Grx
- 本文链接: https://ruixiaoguo.github.io/Grx.github.io/Grx.github.io/2022/05/01/Apple授权登录-sign in with Apple/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!