iOS 13 苹果登录实践 Sign In with Apple

本文仅讲最简单的实现苹果登录的方法,更多的功能请查阅文档,感谢

简介:

iOS 13 推出的一项更隐私、方便、统一的登录方式,开发者可以拿到一个唯一的id、用户的icloud id名字、邮箱(根据用户选择得到真的还是假的邮箱)等字段。

个人理解:在国内必须绑定手机号的情况下,苹果登录其实与微信登录、微博登录是类似的,帐号主体仍然是手机号,其他登录方式要绑定到主体,使用了第三方登录之后,只是方便了以后登录

效果如图:

详见「知乎」最新版本登录页面。

代码之外的配置:

1、升级 macOS 10.14.6 或以上,Xcode 11,一台 iOS 13 的设备(模拟器不行)

2、登录苹果开发者网站,更新mobileprovision文件,勾选 Sign In with Apple 能力

3、Xcode 里选中自己的 target,然后勾选第二个顶部tab(Signing & Capabilities),该区域左上角 +Capability 添加 Sign In with Apple

代码实现(使用 AuthenticationServices 框架):

登录按钮,用来调起登录界面(没有特殊功能,只是一个系统提供的 Button,后面详细说一下这个按钮)

// 系统提供的按钮,分为 Sign In with Apple / Continue with Apple
ASAuthorizationAppleIDButton *signInButton = [[ASAuthorizationAppleIDButton alloc] init];
[self.view addSubview:signInButton];
// size 要求后面讨论
signInButton.frame = CGRectMake(100, 100, 140, 40);
// 添加响应方法
[signInButton addTarget:self action:@selector(signInButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

配置登录界面

    // 创建一个 providerASAuthorizationAppleIDProvider *appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];// 通过 provider 创建一个 requestASAuthorizationAppleIDRequest *appleIDRequest = [appleIDProvider createRequest];// 后续登录使用的一种方式,后面单独讨论
//    ASAuthorizationPasswordProvider *passwordProvider = [ASAuthorizationPasswordProvider new];
//    ASAuthorizationPasswordRequest *passwordRequest = [passwordProvider createRequest];// 要获取的内容appleIDRequest.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];// 系统提供的 Controller,必须使用,需要传入 requests 数组ASAuthorizationController *authController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[appleIDRequest/*, passwordRequest*/]];// 设置代理,接收登录成功/失败的回调authController.delegate = self;// 页面跳转相关的,通过一个代理方法传入一个 windowauthController.presentationContextProvider = self;// Controller 初始化期间,开始授权流程[authController performRequests];
代理回调方法:
#pragma mark ------ ASAuthorizationControllerDelegate ------
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error {// 登录失败NSLog(@"auth failed!, error:%@, code:%ld, description:%@", error, (long)error.code, error.description);
}- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization {// 登录成功NSLog(@"auth success!, %@", authorization.credential);if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {ASAuthorizationAppleIDCredential *credential = (ASAuthorizationAppleIDCredential *)authorization.credential;credential.user;credential.email;credential.fullName;credential.identityToken;credential.user;credential.authorizationCode;// 还有其他的属性}
}#pragma mark ------ ASAuthorizationControllerPresentationContextProviding ------
- (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller {// 返回一个 window,present 登录界面需要用到return [UIApplication sharedApplication].delegate.window;
}

几个注意的点:

1、后端需要拿到 identityToken、user、authorizationCode 与苹果的服务器验证,需要客户端与后端配合

2、299刀的企业证书无法使用苹果登录,如果你们app有企业证书打包,需要兼容,修改yourApp.entitlements

3、关于苹果登录按钮是否可以自定义?答案是肯定的,可以自己写 UIButton,不一定要用ASAuthorizationAppleIDButton

iOS 13 苹果登录实践 Sign In with Apple相关推荐

  1. iOS 苹果授权登录(Sign in with Apple)

    在 iOS13 中,如果 App 提供第三方登录,就必须添加 苹果登录 Sign in with Apple 选项,并要求所有开发者于 2020年4月之前 完成现有应用的更新,否则审核不给通过. iO ...

  2. iOS 苹果授权登录(Sign in with Apple)系列之Apple Developer配置篇

    原文 在 iOS13 中,如果 App 提供第三方登录,就必须添加 苹果登录 Sign in with Apple 选项,并要求所有开发者于 2020年4月之前 完成现有应用的更新,否则审核不给通过. ...

  3. 【iOS】苹果登录Sign in with Apple

    在iOS13中,如果苹果开发者提供任何其他第三方登录,就必须提供"苹果登录"选项.也就是说,如果软件要求"微信登录"或是"QQ登录"时,必须 ...

  4. iOS 集成苹果登录及苹果图标的制作要求

    前言 如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录.如果应用没有集成一般情况下都会被审核团队给打回来. 苹果集成登录 首先,你需要在开发者中心,找到你的应用,勾选上 ...

  5. uni-app,原生APP,关于苹果APP集成Sign in with Apple(通过Apple登录)后,APP内注册需要强制绑定手机号,审核被拒问题

    在提交审核页面,备注里写上如下内容,即可通过. 你好,Apple! 因为我们的APP包含发贴和发布评论功能,根据中国网信办相关规定,对信息发布者要求后台实名.具体规定如下: <互联网用户公众账号 ...

  6. 关于苹果APP集成Sign in with Apple后,APP内注册需要强制绑定手机号,审核被拒问题

    苹果开发者在2019年开始提供了sign in with Apple的一系列接口,并且对于大部分苹果应用都是需要集成这种苹果登录的功能. 集成的方法在其他地方容易查得到,这里不赘述,直奔主题. 如果A ...

  7. 【IOS】Firebase(Google、Facebook、Apple、Guest)登录,FCM,Apple In-App,Kakao

    写在开头 记录自己接入SDK的过程.请各位指正. 最好提前做的工作 工欲善其事,必先利其器. 1.Mac电脑因Xcode而内存越来越大 弄到一半突然提示我内存不足,而且xcode还越来越卡.也是醉了. ...

  8. Uniapp苹果登录sign in Apple

    Uniapp苹果登录sign in Apple 前提:软件内,如果已经实现第三方登录,必须也有sign in Apple功能,否则审核会不通过 准备工作:uniapp自带sign in Apple必须 ...

  9. 苹果6s能安装通讯测试软件么,iOS 13在iPhone 6S和SE上运行情况如何

    原标题:iOS 13在iPhone 6S和SE上运行情况如何 iOS 13 放弃了对多代 iPhone 的支持:2013 年的 iPhone 5S 和 2014 年的 iPhone 6,6 Plus ...

  10. 苹果sf字体_苹果 iOS 13 黑暗模式设计指南

    苹果在 WWDC 大会上发布了黑暗模式,从 macOS Mojave 到 Google I/O 开发者大会来看,iOS 加入黑暗模式已经是一件可预期的事情了. 那么对于设计师来说,我们在设计黑暗模式的 ...

最新文章

  1. Java学习总结:25
  2. ThreadLocal究竟存不存在内存泄漏?
  3. suse软件管理程序zypper
  4. java二柱子_japonensisjava导航
  5. 查询表空间状态,创建表空间,让表空间的大小自动扩展,删除表空间
  6. 候选JEP:记录和密封类型
  7. Spring RESTful错误处理
  8. python websocket异步高并发_高并发异步uwsgi+web.py+gevent
  9. axure中备注线_1分钟K线、日K线、月K线……不同周期的K线图到底有啥用?
  10. 【实践】多业务建模在美团搜索排序中的实践
  11. sql server 加密_SQL Server机密–第一部分–加密基础知识和SQL Server加密功能
  12. python基础知识大一总结与反思_Python第一课教学设计及反思
  13. 【Java面试题系列】:Java中final finally finalize的区别
  14. 从Master到百度《最强大脑》人机大战:AI成坊间话题意味着什么?
  15. html的坐标怎么表示,经纬度怎样表示
  16. Win7如何去除快捷方式小箭头
  17. bp是什么意思贷款利率,lpr+bp利率是什么意思
  18. 时下最热门的五款微信编辑器使用评测
  19. MySQL Key的含义
  20. 让html 自动换行,怎样让HTML 表格中内容自动换行??

热门文章

  1. 问题解决:前面板没声音PC喇叭响
  2. win7蓝牙怎么连接_图文详解win7蓝牙怎么打开
  3. 电脑如何分盘win10_Win10电脑如何刻录光盘?用win10自带刻录工具来刻录DVD光盘教程...
  4. kubernetes【工具】kind【1】入门实践
  5. 中国地区2012年第一季度网络安全威胁报告
  6. OutMan——Foundation框架中的NSString类和NSMutableString类
  7. SRE-网站可靠性工程
  8. 手机html在哪个文件里,手机相册在哪个文件夹,教您手机图片存放在哪里
  9. Nginx事件管理之epoll模块
  10. python爬虫方向_爬虫实战(三) 用Python爬取拉勾网