描述

根据 苹果审核 指南:如果app专门使用第三方或社交登录服务(例如微信登录,QQ登录,Facebook登录,Google登录,Twitter登录等)来对其进行设置或验证这个app的用户主账户,则该app必须同时提供“通过Apple登录”作为等效选项,用户的主账户时指在app中建立的,用于标识身份,登录和访问功能和相关服务的账户。

在以下情况下,不要求提供“通过 Apple 登录”选项:

  • 您的 app 仅使用公司自有的帐户设置和登录系统。
  • 您的 app 是一款教育、企业或商务 app,要求用户使用现有的教育或企业帐户登录。
  • 您的 app 使用政府或行业支持的公民身份系统或电子身份证来鉴定用户身份。
  • 您的 app 是特定第三方服务的客户端,用户需要使用他们的邮件、社交媒体或其他第三方帐户直接登录才能访问内容。

按钮要求

苹果会提供一个推荐的按钮,如上图,你也可以自定义一个按钮,但必须符合苹果的规范:样式规范官方文档。

集成

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)platformTypesettings:(NSDictionary *)settingsonStateChanged:(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登录的话都只显示步骤二的界面。

ShareSDK 苹果登录实现相关推荐

  1. ios 登录 java 后台,IOS苹果登录sign in with apple后端校验

    IOS苹果登录sign in with apple后端校验 最近新开发的app在IOS平台app store connent提审的时候,被拒了,原因是app上如果有接第三方登陆(比如微信,微博,fac ...

  2. Java Apple_GitHub - izhaorui/AppleLogin-java: 苹果登录 Sign in with Apple 服务端校验

    APP端苹果登录java后端校验 主要校验苹果授权登录token 是否正确 主要方法 public RSAPublicKeySpec build(final String n, final Strin ...

  3. 全网最佳,第三方登录系列——苹果登录

    梳理一下苹果登录的逻辑, 这一篇是Kotlin版本的,Kotlin的代码语义比较明确,和Java兼容, 同样的方法都可以在Java中找到. 之后我会整理一篇Java版本和Go版本的 apple登录有两 ...

  4. Uniapp苹果登录sign in Apple

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

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

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

  6. IONIC4 苹果登录-Sign In With Apple Id

    最近上架APP被苹果拒绝,理由是使用第三方登录需加上苹果登录,否则不给上架,所以在这分享一下ionic4的苹果登录 首先安装cordova插件,获取系统版本插件 ionic cordova plugi ...

  7. ios 自架验证服务器,iOS 13-Sign In with Apple(苹果登录)APP+后端验证

    关于Sign In with Apple的介绍就不讲了,直接进入正题吧! Certificates,IDs & Profiels->Keys->+号 1585892549402.j ...

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

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

  9. swift 苹果登录

    苹果登录项目中继承第三方登录时,需增加上苹果登录即可上架苹果登录需要iOS系统 13以上支持详细的内容阅读苹果官方的网址url:https://developer.apple.com/document ...

最新文章

  1. 使用acme.sh撸一个免费且自动更新的HTTPS证书
  2. STM32F407之搭建工程
  3. POJ--3268--Silver Cow Party【SPFA+邻接表】
  4. ArcGIS时态数据应用——动态展示3个月内犯罪案件数量变化
  5. Lodash 中文文档 (v3.10.1) - “Number” 方法
  6. 犀牛书——CHAP8:函数
  7. 键盘视频鼠标(KVM)切换器基础知识
  8. 计算机控制系统——数字控制器设计之模拟控制器的离散化(Chapter 5)
  9. 通过举例彻底搞懂Matlab中max函数和min函数的用法(求最大值和最小值)
  10. mysql start with_mysql 实现 start with
  11. 灯神动态规划(Dynamic Programing)学习笔记 打劫问题 凑整问题 背包问题 例题+原理+源码超详细讲解
  12. heka 0.11.0源码分析--主要启动流程分析
  13. 探索 Sa-Token (一) SpringBoot 集成 Sa-Token
  14. 区块链与金融IT“联姻”的思路和方案
  15. JavaScript——问卷星自动填写
  16. 数据标准和数据规范到底有什么区别???
  17. Labview和西门子PLC smart200 OPC通讯仪器串口通讯
  18. 文件属性修改器(C#)
  19. 日照python培训_日照市学习it课程
  20. 想离职,我们需要做什么

热门文章

  1. 【python】廖雪峰学习笔记
  2. 硬盘基础知识:磁头 柱面 扇区理解
  3. Vue下载blob类型的excel文件:
  4. 如何完全卸载HbuilderX?
  5. arduino教程- 14.制作光电子琴与MIDI电子鼓
  6. Android Wear 之 WearableListView
  7. 树莓派(Raspberry Pi)中如何截图截屏(截图)
  8. linux进程控制(上)
  9. java定义boolean命名_阿里规范:为何boolean类型变量命名禁用is开头
  10. Pytorch修改模型参数的方法