iOS开发:Sign In With Apple(使用Apple登录)

公司要开发新的APP,涉及到第三方登录。之前看过WWDC2019视频,了解到如果新的APP(目前为止未在AppStore发布过的)如果有第三方登录功能,那么必须适配苹果推出的Sign In With Apple才能被审核通过。所以就根据苹果文档和WWDC2019视频,总结出以下操作方案,仅供大家参考。

1、什么是Sign In With Apple

苹果在WWDC2019推出了Sign In With Apple(以下简称SIWA),即用户通过端上的Apple ID就可以登录第三方应用。目的是为用户提供一种快速,安全且隐私友好的方式来设置帐户并开始使用您的服务。这次苹果提供的Sign In With Apple快捷登录,也是通过这个跨平台的功能使得在这个生态环境中的应用操作更加方便简洁。详情请参考:WWDC2019 Sign In With Apple 视频

官方文档介绍:https://developer.apple.com/cn/sign-in-with-apple/get-started/

                          https://developer.apple.com/cn/news/?id=09122019b

通过视频观看,苹果反复的阐述安全性,包括本身Apple ID具备的双重认证、用户可以隐藏自己的Apple ID等,这些都使得用户隐私得到了最大的保护,虽然我们依然可以通过API来获取到诸如用户姓名这样的信息,但是最为关键的user则是毫无规律可言的(至少在我们开发者看来),而这个user则为同一个开发者账号下的所有app中保持有且仅有一个,这个特点看上去能够和已有的帐号体系打通。

Sign In With Apple特点:

Streamlined account setup(简化帐户设置)

Verified email addresses(验证电子邮件地址)

Built-in security(内置安全性)

Anti-fraud(反欺诈):包括:

Cross-platform(跨平台):支持苹果生态的所有系统。eg: iOS,macOS, watchOS, tvOS, JavaScript等。

接入Sign In With Apple的好处:应用程序或网站中显示“使用Apple登录”按钮意味着人们可以使用他们已有的Apple ID进行点击或登录,而无需填写表格,验证电子邮件地址和选择密码。使用Apple登录提供了一种新的,更私密的方式,可以简单快速地登录应用程序和网站,同时为人们提供他们可以信赖的一致登录体验,以及不必记住多个帐户和密码的便利。如果您选择询问姓名和电子邮件地址,人们可以选择保留其电子邮件地址的私密性,而共享一个唯一的随机电子邮件地址。有关开发人员的指导,请参阅AuthenticationServices


2、如何接入Sign In With Apple

2.1:系统配置:苹果开发文档明确规定:苹果电脑系统macos(10.15)(吓的我赶紧升级我的笔记本系统),手机iOS系统ios(13.0)(毫不犹豫的升级)。由于只有Xcode11才支持Sign In With Apple接入代码的开发,所以Xcode我升级到了11.1正式版。

上面三个条件缺一不可。

开发文档规定的系统版本号

2.2:工程配置

2.2.1按照下图所示

工程配置顺序

2.2.2:点击 “+”号,在弹出的框里搜索 Sign In With Apple,然后双击菜单中的 Sign In With Appple,添加到工程中。

搜索Sign In With Apple

2.2.3:添加成功Sign In With Apple,如下图所示

添加成功所示

2.2.4:如果项目中没有 AuthenticationServices.framework ,请务必添加 AuthenticationServices.framework 。

添加系统支持的framework

2.3:集成Sign In With Apple 流程

集成苹果ID登录流程


3、集成Sign In With Apple

3.1:集成SIWA,一般用到的是下面几个类:

Sign In with Apple Entitlement:一种权利,可让您的应用程序使用“通过Apple登录”。Key: com.apple.developer.applesignin

class  ASAuthorizationAppleIDProvider:一种用于基于用户的Apple ID生成用于验证用户身份的请求的机制。

class  ASAuthorizationController:一个控制器,用于管理提供者创建的授权请求。

class  ASAuthorizationAppleIDCredential:成功的Apple ID身份验证产生的凭证。

class ASAuthorizationAppleIDButton:苹果封装的关于SIWA的按钮类。

calss ASPasswordCredential:密码认证管理类

3.2:集成SIWA开发

主要通过使用#import <AuthenticationServices/AuthenticationServices.h>框架来实现整个的苹果ID登录流程。而核心的类是ASAuthorizationAppleIDProvider,它是来创建和发起苹果ID登录请求的提供者。

3.2.1:SIWA按钮

SIWA按钮实现的代码

3.2.2按钮的点击实现:

点击按钮实现的功能

3.2.3:授权代理方法:

3.2.3.1:授权成功的方法:

- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization*)authorization  API_AVAILABLE(ios(13.0))

授权成功

3.2.3.1:授权失败的方法:

- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError*)error  API_AVAILABLE(ios(13.0))

授权失败

3.2.4:授权页面显示

初次授权和已经授权再次点击时所展现出的界面是不一样的,如下图所示:左边图片是初次登陆页面展示,右边图片是再次登陆页面展示

授权登录页面展示

弹出页面后,按页面所示进一步操作即可。

在初次授权中,姓名这一栏是可以自己修改的,点击<姓名>这一栏,就可以根据需要修改

电子邮件:

可以选择显示或者隐藏,也可以选择其他的邮箱,点击共享我的电子邮件,可以弹出你自己所有的APPID邮箱账号,你可以选择其他的账号。

如果你选择<共享我的电子邮件>,那么在授权成功后,你会拿到真实的邮箱:

真实的邮箱

如果你选择<隐藏邮件地址>,那么在授权成功后,你会拿到一个经过处理后的混乱的邮箱:

混乱的邮箱


相关示例代码,请点击这里


4、Sign In With Apple按钮样式

样式介绍:官方介绍

4.1:Sign In with Apple 提供了两种按钮样式变种:【Sign In with Apple】 和 【Continue with Apple】。根据需要,选择最适合自己服务的登录场景所需要的样式。

俩种按钮样式

4.2:根据平台的不同,该系统最多可以为使用Apple登录按钮提供三种外观:白色(white),带有轮廓的白色(white with an outline)和黑色( black)。选择最适合您在其上显示按钮的背景的外观。

4.2.1:白色:

白色样式在iOS,macOS,tvOS和Web中可用。在提供足够对比度的深色或彩色背景上使用此样式。

白色样式

4.2.2:白色带轮廓

白色轮廓样式可在iOS,macOS和Web中使用。在无法提供足够对比度的白色或浅色背景上使用此样式;不要在黑暗或饱和的背景上使用它。

白色带轮廓

4.2.3:黑色

黑色样式适用于所有平台和网络。在可提供足够对比度的白色或浅色背景上使用此样式;不要在黑色或深色背景上使用它。

黑色

4.3:按钮尺寸和位置

4.3.1:突出显示“使用Apple登录”按钮。使“使用Apple登录”按钮与其他登录按钮的大小相同,并避免使人们滚动查看该按钮。

4.3.2:调整拐角半径以匹配应用程序中其他按钮的外观。默认情况下,“使用Apple登录”按钮具有圆角。在iOS,macOS和网络中,您可以更改转角半径以产生带有方形角的按钮或弧形形的按钮。有关开发人员的指导,请参阅cornerRadius(iOS和macOS)和“使用Apple Buttons显示和配置登录”(Web)。

按钮样式所示

4.3.3:保持最小的按钮大小和按钮周围的边距。请注意,按钮标题的长度可能会因地区而异。使用以下值作为指导:

按钮尺寸参考


5、关于使用Sign In With Apple审核的问题

关于苹果对Sign In With Apple适配审核的规则,官方文档说明 第4.8条

Apps that exclusively use a third-party or social login service (such as Facebook Login, Google Sign-In, Sign in with Twitter, Sign In with LinkedIn, Login with Amazon, or WeChat Login) to set up or authenticate the user’s primary account with the app must also offer Sign in with Apple as an equivalent option. A user’s primary account is the account they establish with your app for the purposes of identifying themselves, signing in, and accessing your features and associated services.

仅使用第三方或社交登录服务(例如Facebook登录,Google登录,Twitter登录,LinkedIn登录,Amazon登录或微信登录)的应用来设置或验证用户的主帐户该应用程序还必须提供“与Apple登录”作为等效选项。用户的主要帐户是他们在您的应用中建立的帐户,用于识别自己的身份,登录并访问您的功能和相关服务。

如果是下面这类类型的应用则不需要添加:

您的应用专门使用公司自己的帐户设置和登录系统。

您的应用是教育,企业或商业应用,要求用户使用现有的教育或企业帐户登录。

您的应用程序使用政府或行业支持的公民身份识别系统或电子ID来对用户进行身份验证。

您的应用是特定第三方服务的客户端,要求用户直接登录其邮件,社交媒体或其他第三方帐户才能访问其内容

另外需要注意,关于何时接入Sign In With Apple,苹果在有关“通过 Apple 登录”的指南更新有说明:

We’ve updated the App Store Review Guidelines to provide criteria for when apps are required to use Sign in with Apple. Starting today, new apps submitted to the App Store must follow these guidelines. Existing apps and app updates must follow them by April 2020. We’ve also provided new guidelines for using Sign in with Apple on the web and other platforms.

我们更新了《 App Store审查指南》,为何时需要应用程序使用“使用Apple登录”提供了标准。从今天开始,提交到App Store的新应用必须遵循这些准则现有应用程序和应用程序更新必须在2020年4月之前进行。我们还提供了有关在网络和其他平台上使用Apple登录功能的新指南。

查看《App Store 审核指南》 (英文)


6、关于Sign In With Apple登录后和服务器交互的问题,

Sign In With Apple 从登陆到服务器验证

Sign in with Apple(苹果授权登陆)

快速配置 Sign In with Apple

苹果官方文档之生成并验证token


7、附录:

苹果最新更新:https://developer.apple.com/news/

APP添加apple登录https://developer.apple.com/documentation/authenticationservices/adding_the_sign_in_with_apple_flow_to_your_app


注意:以上属于原创,若有雷同纯属巧合;如有错误,请多多指正,转载请标明来源和作者。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容