iOS 13 苹果登录实践 Sign In with Apple
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相关推荐
- iOS 苹果授权登录(Sign in with Apple)
在 iOS13 中,如果 App 提供第三方登录,就必须添加 苹果登录 Sign in with Apple 选项,并要求所有开发者于 2020年4月之前 完成现有应用的更新,否则审核不给通过. iO ...
- iOS 苹果授权登录(Sign in with Apple)系列之Apple Developer配置篇
原文 在 iOS13 中,如果 App 提供第三方登录,就必须添加 苹果登录 Sign in with Apple 选项,并要求所有开发者于 2020年4月之前 完成现有应用的更新,否则审核不给通过. ...
- 【iOS】苹果登录Sign in with Apple
在iOS13中,如果苹果开发者提供任何其他第三方登录,就必须提供"苹果登录"选项.也就是说,如果软件要求"微信登录"或是"QQ登录"时,必须 ...
- iOS 集成苹果登录及苹果图标的制作要求
前言 如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录.如果应用没有集成一般情况下都会被审核团队给打回来. 苹果集成登录 首先,你需要在开发者中心,找到你的应用,勾选上 ...
- uni-app,原生APP,关于苹果APP集成Sign in with Apple(通过Apple登录)后,APP内注册需要强制绑定手机号,审核被拒问题
在提交审核页面,备注里写上如下内容,即可通过. 你好,Apple! 因为我们的APP包含发贴和发布评论功能,根据中国网信办相关规定,对信息发布者要求后台实名.具体规定如下: <互联网用户公众账号 ...
- 关于苹果APP集成Sign in with Apple后,APP内注册需要强制绑定手机号,审核被拒问题
苹果开发者在2019年开始提供了sign in with Apple的一系列接口,并且对于大部分苹果应用都是需要集成这种苹果登录的功能. 集成的方法在其他地方容易查得到,这里不赘述,直奔主题. 如果A ...
- 【IOS】Firebase(Google、Facebook、Apple、Guest)登录,FCM,Apple In-App,Kakao
写在开头 记录自己接入SDK的过程.请各位指正. 最好提前做的工作 工欲善其事,必先利其器. 1.Mac电脑因Xcode而内存越来越大 弄到一半突然提示我内存不足,而且xcode还越来越卡.也是醉了. ...
- Uniapp苹果登录sign in Apple
Uniapp苹果登录sign in Apple 前提:软件内,如果已经实现第三方登录,必须也有sign in Apple功能,否则审核会不通过 准备工作:uniapp自带sign in Apple必须 ...
- 苹果6s能安装通讯测试软件么,iOS 13在iPhone 6S和SE上运行情况如何
原标题:iOS 13在iPhone 6S和SE上运行情况如何 iOS 13 放弃了对多代 iPhone 的支持:2013 年的 iPhone 5S 和 2014 年的 iPhone 6,6 Plus ...
- 苹果sf字体_苹果 iOS 13 黑暗模式设计指南
苹果在 WWDC 大会上发布了黑暗模式,从 macOS Mojave 到 Google I/O 开发者大会来看,iOS 加入黑暗模式已经是一件可预期的事情了. 那么对于设计师来说,我们在设计黑暗模式的 ...
最新文章
- Java学习总结:25
- ThreadLocal究竟存不存在内存泄漏?
- suse软件管理程序zypper
- java二柱子_japonensisjava导航
- 查询表空间状态,创建表空间,让表空间的大小自动扩展,删除表空间
- 候选JEP:记录和密封类型
- Spring RESTful错误处理
- python websocket异步高并发_高并发异步uwsgi+web.py+gevent
- axure中备注线_1分钟K线、日K线、月K线……不同周期的K线图到底有啥用?
- 【实践】多业务建模在美团搜索排序中的实践
- sql server 加密_SQL Server机密–第一部分–加密基础知识和SQL Server加密功能
- python基础知识大一总结与反思_Python第一课教学设计及反思
- 【Java面试题系列】:Java中final finally finalize的区别
- 从Master到百度《最强大脑》人机大战:AI成坊间话题意味着什么?
- html的坐标怎么表示,经纬度怎样表示
- Win7如何去除快捷方式小箭头
- bp是什么意思贷款利率,lpr+bp利率是什么意思
- 时下最热门的五款微信编辑器使用评测
- MySQL Key的含义
- 让html 自动换行,怎样让HTML 表格中内容自动换行??
热门文章
- 问题解决:前面板没声音PC喇叭响
- win7蓝牙怎么连接_图文详解win7蓝牙怎么打开
- 电脑如何分盘win10_Win10电脑如何刻录光盘?用win10自带刻录工具来刻录DVD光盘教程...
- kubernetes【工具】kind【1】入门实践
- 中国地区2012年第一季度网络安全威胁报告
- OutMan——Foundation框架中的NSString类和NSMutableString类
- SRE-网站可靠性工程
- 手机html在哪个文件里,手机相册在哪个文件夹,教您手机图片存放在哪里
- Nginx事件管理之epoll模块
- python爬虫方向_爬虫实战(三) 用Python爬取拉勾网