形容
依据 [](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/> 苹果审核 指南:如果 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/> 苹果审核 指南:如果 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 登录的话都只显示步骤二的界面。