iOS开发:使用 Sign In With Apple(登录)用法以及注意事项

本文介绍了iOS开发中接入Sign In With Apple的必要性、接入步骤,包括系统和Xcode配置、证书配置、工程配置、代码实现、用户状态检测及取消授权的处理。同时提供了Demo供参考。
摘要由CSDN通过智能技术生成

一、为什么要使用Sign in with Apple?

苹果在19年 9 月12 号更新了审核指南,加入 4.8 Sign in with Apple 一条,要求所有使用第三方登录 的 App,都必须接入 Sign in with Apple。已经上架的 App 需在 2020 年 4 月 前完成接入工作,新上架 App(如果支持三方登录)必须接入Sign in with Apple,否则将被拒。

二、如何接入Sign In With Apple ?

1、前期准备

(1)、系统配置:苹果开发文档明确规定:苹果电脑系统macos(10.15)(吓的我赶紧升级我的笔记本系统),手机iOS系统ios(13.0)(毫不犹豫的升级)。由于只有Xcode11才支持Sign In With Apple接入代码的开发,所以Xcode我升级到了11.1正式版。
(2)、证书配置
登录开发者中心,在需要启用 Sign in with Apple 的 Apple ID中勾选 Sign in with Apple.

具体步骤如下图
登录苹果开发者中心,选择Account
登录苹果开发者中心,选择Account
在这里插入图片描述
选择 Identifiers 这边可以看到自己工程的 Bundle Identifier点进去勾选 Sign in with Apple 若没有添加一个


注意:

描述信息最好使用 XC + Bundle ID


在这里插入图片描述
勾选 Sign in with Apple
在这里插入图片描述

(3)、工程配置

新建工程,选择项目 TARGETS -> Signing&Capabilities ,单击下图中的 3:Capability:
在这里插入图片描述
在弹出框中搜索找到 Sign in with Apple:双击添加
在这里插入图片描述
这些完成后,我们就可以在项目中添加代码了。

2、添加代码

(1)、在需要使用 login with Apple 的地方,引入头文件:
#import <AuthenticationServices/AuthenticationServices.h>

首先,我们需要一个登录按钮,系统为我们预设了一个固定样式登录按钮ASAuthorizationAppleIDButton,我们可以直接使用。

if (@available(iOS 13.0, *)) {
   
        ASAuthorizationAppleIDButton *appleIDButton = [ASAuthorizationAppleIDButton new];
        appleIDButton.frame =  CGRectMake(.0, .0, CGRectGetWidth(self.view.frame) - 40.0, 100.0);
        CGPoint origin = CGPointMake(20.0, CGRectGetMidY(self.view.frame));
        CGRect frame = appleIDButton.frame;
        frame.origin = origin;
        appleIDButton.frame = frame;
        appleIDButton.cornerRadius = CGRectGetHeight(appleIDButton.frame) * 0.25;
        [self.view addSubview:appleIDButton];
        [appleIDButton addTarget:self action:@selector(handleAuthrization:) forControlEvents:UIControlEventTouchUpInside];
    }

通过参数 type、style可以设置为不同样式的按钮;当然,我们也可以自定义,但是要遵循苹果的相关设计规范,详见 Human Interface Guidelines

(2)、我们还需要用到两个协议
// 提供关于授权请求结果信息的接口
ASAuthorizationControllerDelegate, 
// 控制器的代理找一个展示授权控制器的上下文的接口
ASAuthorizationControllerPresentationContextProviding> 

协议的方法


#pragma mark - ASAuthorizationControllerDelegate

// 授权成功地回调 
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization  API_AVAILABLE(ios(13.0))// 授权失败的回调
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error  API_AVAILABLE(ios(13.0));

#pragma mark - ASAuthorizationControllerPresentationContextProviding

/*! @brief 返回弹出请求视图的window
 *
 * @param ASPresentationAnchor  为 UIWindow 的别名
 * @param controller   管理授权请求的控制器
 * return 弹出请求视图的window
 */
- (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller  API_AVAILABLE(ios(13.0))
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值