形容

依据[](https://developer.apple.com/cn/app-store/review/guidelines/>苹果审核 指南:如果app专门应用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建设的,用于标识身份,登录和拜访性能和相干服务的账户。
</p>
<p>
在以下状况下,不要求提供“通过 Apple 登录”选项:</p>
<ul>
<li>您的 app 仅应用公司自有的帐户设置和登录零碎。</li>
<li>您的 app 是一款教育、企业或商务 app,要求用户应用现有的教育或企业帐户登录。</li>
<li>您的 app 应用政府或行业反对的公民身份零碎或电子身份证来鉴定用户身份。</li>
<li>您的 app 是特定第三方服务的客户端,用户须要应用他们的邮件、社交媒体或其余第三方帐户间接登录能力拜访内容。
</li>
</ul>
<p>
按钮要求</p>
<p><img src=)

[](https://developer.apple.com/cn/app-store/review/guidelines/&gt;苹果审核 指南:如果app专门应用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建设的,用于标识身份,登录和拜访性能和相干服务的账户。
</p>
<p>
在以下状况下,不要求提供“通过 Apple 登录”选项:</p>
<ul>
<li>您的 app 仅应用公司自有的帐户设置和登录零碎。</li>
<li>您的 app 是一款教育、企业或商务 app,要求用户应用现有的教育或企业帐户登录。</li>
<li>您的 app 应用政府或行业反对的公民身份零碎或电子身份证来鉴定用户身份。</li>
<li>您的 app 是特定第三方服务的客户端,用户须要应用他们的邮件、社交媒体或其余第三方帐户间接登录能力拜访内容。
</li>
</ul>
<p>
按钮要求</p>
<p><img src=)

[苹果会提供一个举荐的按钮,如上图,你也能够自定义一个按钮,但必须合乎苹果的标准:](https://developer.apple.com/cn/app-store/review/guidelines/&gt;苹果审核 指南:如果app专门应用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建设的,用于标识身份,登录和拜访性能和相干服务的账户。
</p>
<p>
在以下状况下,不要求提供“通过 Apple 登录”选项:</p>
<ul>
<li>您的 app 仅应用公司自有的帐户设置和登录零碎。</li>
<li>您的 app 是一款教育、企业或商务 app,要求用户应用现有的教育或企业帐户登录。</li>
<li>您的 app 应用政府或行业反对的公民身份零碎或电子身份证来鉴定用户身份。</li>
<li>您的 app 是特定第三方服务的客户端,用户须要应用他们的邮件、社交媒体或其余第三方帐户间接登录能力拜访内容。
</li>
</ul>
<p>
按钮要求</p>
<p><img src=)款式标准官网文档。

集成

ShareSDK从4.3.4版本开始反对苹果登录,将苹果返回的数据全副返回给用户。在应用ShareSDK提供的苹果登录性能后,还将提供一个能够监听苹果登录状态变动的性能,在登录状态被登记时能够实时检测。能够参考demo例子,在demo中的体现为: 在用户登录后,进设置界面(能够在另一台设施上操作)删除该app登录权限,则app能实时接管登录账号生效的状态(重新启动须要在进入前台后能力获取),从而使app更平安。

下载SDK

登录咱们的 官网,进行下载,须要苹果登录,请勾选。

导入SDK

将下载的SDK导入到我的项目里,并增加依赖库

AuthenticationServices.framework

我的项目配置

证书开明Sign In with Apple选项,并且在Xcode的我的项目里配置

代码实现

(本人能够打印返回的信息,须要什么能够依据key去获取)

/** 受权 @param platformType 平台类型 @param settings 受权设置,承受scopes属性设置,如新浪微博关注官网微博:@{@"scopes" : @[@"follow_app_official_microblog"]},相似“follow_app_official_microblog”这些字段是各个社交平台提供的。QQ平台如设置二维码受权,增加字段为QQAuthType:@{@"QQAuthType":@1}, 0为网页账号密码登录受权 @param stateChangedHandler 受权状态变更回调解决 @return 会话id */+ (SSDKSession *)authorize:(SSDKPlatformType)platformType                                settings:(NSDictionary *)settings                 onStateChanged:(SSDKAuthorizeStateChangedHandler)stateChangedHandler;

示例代码

[ShareSDK authorize:SSDKPlatformTypeAppleAccount                      settings:nil             onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {                    if (state == SSDKResponseStateSuccess)                    {                              NSLog(@"rawData---%@",user.rawData);                             NSLog(@"credential--%@",[user.credential rawData]);                    }                    else                    {                             NSLog(@"%@",error.userInfo);                    }}];

登录状态监听

(依据本人的需要可加可不加)

/** 监听apple登录状态@param object 增加监听的对象,在对象销毁时移除监听@param isFirstAddCallBack 第一次增加时就回调以后状态@param handler  返回apple登录状态*/+ (void)addObserve:(nullable id)object isFirstAddCallBack:(BOOL)isFirstAddCallBack forAppleAccountLoginStateHandler:(void (^) (SSDKAppleAccountState state, SSDKUser *user, NSError *error))handler;

示例代码

[AppleAccountConnector addObserve:nil                                isFirstAddCallBack:YES         forAppleAccountLoginStateHandler:^(SSDKAppleAccountState state, SSDKUser * _Nonnull user, NSError * _Nonnull error) {           if (state != SSDKAppleAccountStateAuthorized){}                     else{                     if (user) {                             NSLog(@"------%@", user.rawData);}                  }}];

点击登录按钮发动流程如下:

i. 第一次登陆

能够输出姓名、邮箱,之后,通过输出明码、指纹、faceID等登录,在返回时,返回user、token、姓名、邮箱等信息。

ii. 第二次登陆

无需输出信息,间接通过输出明码、指纹、faceID等登录,但此时只能获取到用户的user及token信息。

iii.退出登录

在"设置->账户->明码与安全性->应用您的apple ID 的 App"中删除此利用的user记录。此时,如果再关上app进行苹果登录的话须要从第一步开始。否则只有登陆过,不管在任何设施用同一个appleID登录的话都只显示步骤二的界面。