ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录
文章目录
- 截图
- 1.在开发者网站的app id中添加Sign in with Apple功能
- 2.在Xcode中添加Sign in with Apple功能
- 3.代码:只有第一次登录的时候可以获取到用户名
- 参考博客
- chatGPT答案
截图
1.在开发者网站的app id中添加Sign in with Apple功能
1.1 如果你新建app id,记得在新建的时候就选中Sign in with Apple功能
1.2 如果app已经上线了,后面再需要加苹果登录的功能,也可以在app id的配置中加这个功能,只是勾选Sign in with Apple点击Save后,profilex需要重新生成
2.在Xcode中添加Sign in with Apple功能
3.代码:只有第一次登录的时候可以获取到用户名
import AuthenticationServices
//MARK: Sign in with Apple 苹果第三方登录
extension LoginVC{func addAppleLoginBtn(){let appleLoginButton = ASAuthorizationAppleIDButton(type: .signIn, style: .black)view.addSubview(appleLoginButton)appleLoginButton.snp.makeConstraints { make inmake.top.equalTo(fbLoginButton.snp_bottomMargin).offset(40*GLratioHeight)make.centerX.equalToSuperview()make.width.equalTo(200)make.height.equalTo(40)}appleLoginButton.addTarget(self, action: #selector(appleLoginButtonTapped), for: .touchUpInside)}@objc func appleLoginButtonTapped() {// 在这里处理按钮点击事件,启动苹果登录流程let appleIDProvider = ASAuthorizationAppleIDProvider()let request = appleIDProvider.createRequest()request.requestedScopes = [.fullName, .email]let authorizationController = ASAuthorizationController(authorizationRequests: [request])authorizationController.delegate = selfauthorizationController.presentationContextProvider = selfauthorizationController.performRequests()}}extension LoginVC: ASAuthorizationControllerDelegate {func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {printXY(#function, obj: self, line: #line)if let credential = authorization.credential as? ASAuthorizationAppleIDCredential {// 用户成功登录,可以获取用户身份信息并进行相应操作let userIdentifier = credential.user//名字只有第一登录的时候可以获取到,后面都是nillet fullName = credential.fullNamelet name = (fullName?.givenName ?? "xxx") + " " + (fullName?.familyName ?? "apple")let email = credential.email// 在这里处理用户身份信息,例如创建用户账户、进行授权等}}func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {// 登录过程中出现错误,可以在这里处理错误情况print("Apple Login Error: \(error.localizedDescription)")}
}extension LoginVC: ASAuthorizationControllerPresentationContextProviding {func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {return self.view.window!}
}
参考博客
iOS 苹果登录(第三方登录) - csdn
集成AppleID登录 - 简书
chatGPT答案
要在你的 iOS 应用中接入苹果登录,你需要按照以下步骤进行:
苹果开发者账号: 确保你有一个苹果开发者账号,因为在使用苹果登录功能之前,你需要在苹果开发者网站上注册你的应用,并创建相应的身份验证密钥。
Xcode 中配置应用: 打开你的 Xcode 项目,然后转到你的应用目标设置。在 “Signing & Capabilities”(签名与能力)选项卡中,确保你的应用已启用 “Sign in with Apple”(使用苹果登录)功能。如果没有,请点击 “+” 按钮,然后添加该功能。
在苹果开发者网站上配置身份验证密钥: 登录苹果开发者网站,转到 “Certificates, Identifiers & Profiles”(证书、标识符与配置文件)部分。然后,创建一个新的认证密钥,选择 “Sign in with Apple”(使用苹果登录)选项。
集成苹果登录 SDK: 在你的应用中集成苹果登录 SDK。苹果提供了一个名为 “AuthenticationServices” 的框架,你可以使用它来处理苹果登录。确保在需要使用苹果登录功能的视图控制器中导入该框架,并按照苹果的文档进行配置。
实现登录流程: 在你的应用中添加适当的按钮或页面,用于触发苹果登录流程。在用户点击登录按钮时,调用苹果登录 SDK 提供的方法启动登录流程。然后,处理登录成功或失败的回调,并根据情况执行相应的操作。
处理用户数据: 登录成功后,你将收到一个包含用户身份信息的认证令牌。你可以使用这些信息来创建用户账户、进行授权或执行其他操作。确保遵循苹果的隐私政策和最佳实践,正确处理用户数据。
测试和优化: 在集成苹果登录后,进行全面的测试,确保它能够在各种情况下正常工作。此外,考虑优化用户体验,确保登录流程简单直观,并提供适当的错误处理和反馈。
通过以上步骤,你应该能够在你的 iOS 应用中成功集成苹果登录功能。
相关文章:

ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录
文章目录 截图1.在开发者网站的app id中添加Sign in with Apple功能2.在Xcode中添加Sign in with Apple功能3.代码:只有第一次登录的时候可以获取到用户名参考博客chatGPT答案 截图 1.在开发者网站的app id中添加Sign in with Apple功能 1.1 如果你新建app id,记得在…...

时间系列预测总结
转载自:https://mp.weixin.qq.com/s/B1eh4IcHTnEdv2y0l4MCog 拥有一种可靠的方法来预测和预测未来事件一直是人类的愿望。在数字时代,我们拥有丰富的信息,尤其是时间序列数据。 时间序列是指基于时间刻度维度(天、月、年等&…...

NineData创始人CEO叶正盛受邀参加『数据技术嘉年华』的技术大会
4月13日,NineData 创始人&CEO叶正盛受邀参加第13届『数据技术嘉年华』的技术大会。将和数据领域的技术爱好者一起相聚,并分享《NineData在10000公里跨云数据库间实时数据复制技术原理与实践》主题内容。 分享嘉宾 叶正盛,NineData CEO …...
nginx访问路径映射资源目录
Nginx映射资源目录是指在Nginx配置文件中设定规则,使得当客户端向Nginx服务器发送请求访问某个URL时,Nginx能够将该URL映射到服务器本地的实际文件目录,从而正确地提供该目录下的静态资源(如HTML、CSS、JavaScript、图片、视频等文…...
数据挖掘|序列模式挖掘及其算法的python实现
数据挖掘|序列模式挖掘及其算法的python实现 1. 序列模式挖掘2. 基本概念3. 序列模式挖掘实例4. 类Apriori算法(GSP算法)4.1 算法思想4.2 算法步骤4.3 基于Python的算法实现 1. 序列模式挖掘 序列(sequence)模式挖掘也称为序列分析。 序列模式发现&…...

3. Django 初探路由
3. 初探路由 一个完整的路由包含: 路由地址, 视图函数(或者视图类), 可选变量和路由命名. 本章讲述Django的路由编写规则与使用方法, 内容分为: 路由定义规则, 命名空间与路由命名, 路由的使用方式.3.1 路由定义规则 路由称为URL (Uniform Resource Locator, 统一资源定位符)…...

论文笔记:Large Language Models as Analogical Reasoners
iclr 2024 reviewer打分5558 1 intro 基于CoT prompt的大模型能够更好地解决复杂推理问题 然而传统CoT需要提供相关的例子作为指导,这就增加了人工标注的成本——>Zero-shot CoT避免了人工标注来引导推理 但是对于一些复杂的任务难以完成推理,例如c…...
第3章 数据定义语言DDL
文章目录 第3章 DDL语言:数据定义语言3.1 MySQL的数据类型3.2 表的创建:create3.3 表的删除:drop3.4 快速创建表3.5 快速删除表中的数据:truncate3.6 修改表结构:alter 第5章 约束5.1 非空约束:not null5.2…...

C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤
前言 我们在查询数据库中数据的时候,有时候需要剔除一些我们不想要的数据,这时候就需要对数据进行过滤,比如学生信息中,我只需要年龄等于18的,类似这种操作,本文就是详细介绍如何对查询的数据进行初步的过滤。 1、等于操作符 本次查询student_age 等于20的数据,使用我…...

【CVE复现计划】CVE-2024-0195
CVE-2024-0195 简介: SpiderFlow是新一代开源爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。基于springbootlayui开发的前后端不分离,也可以进行二次开发。该系统/function/save接口存在RCE漏洞,攻击者可以构造恶意命…...

k8s的ca以及相关证书签发流程
k8s的ca以及相关证书签发流程 1. kube-apiserver相关证书说明2. 生成CA凭证1.1. 生成CA私钥1.2. 生成CA证书 2. 生成kube-apiserver凭证2.1. 生成kube-apiserver私钥2.2. 生成kube-apiserver证书请求2.3. 生成kube-apiserver证书 3. 疑问和思考4. 参考文档 对于网站类的应用&am…...

思迈特软件与上海德拓签署战略合作协议,携手赋能企业数字化转型
3月27日,广州思迈特软件有限公司(简称“思迈特软件”)与上海德拓信息技术有限公司(简称“德拓信息”)正式签约建立战略合作伙伴关系。双方将在数字化转型、数据服务、数据应用以及市场资源等多个领域展开深度合作&…...

【快捷部署】015_Minio(latest)
📣【快捷部署系列】015期信息 编号选型版本操作系统部署形式部署模式复检时间015MiniolatestCentOS 7.XDocker单机2024-04-09 一、快捷部署 #!/bin/bash ################################################################################# # 作者:c…...
<网络安全>《72 微课堂<什么是靶场?>》
1 简介 网络安全靶场是一种模拟真实网络环境的技术或平台。 网络安全靶场基于虚拟化技术,能够模拟网络架构、系统设备、业务流程的运行状态及运行环境,用于支持网络安全相关的学习、研究、检验、竞赛和演习等活动,旨在提高人员及机构的网络…...

Golang | Leetcode Golang题解之第18题四数之和
题目: 题解: func fourSum(nums []int, target int) (quadruplets [][]int) {sort.Ints(nums)n : len(nums)for i : 0; i < n-3 && nums[i]nums[i1]nums[i2]nums[i3] < target; i {if i > 0 && nums[i] nums[i-1] || nums[i]…...

自动驾驶中的传感器融合算法:卡尔曼滤波器和扩展卡尔曼滤波器
自动驾驶中的传感器融合算法:卡尔曼滤波器和扩展卡尔曼滤波器 附赠自动驾驶学习资料和量产经验:链接 介绍: 追踪静止和移动的目标是自动驾驶技术领域最为需要的核心技术之一。来源于多种传感器的信号,包括摄像头,雷达…...

基于ssm的星空游戏购买下载平台的设计与实现论文
摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,商品交易当然也不能排除在外,随着商品交易管理的不断成熟,它彻底改变了过去传统的经营管理方式,不仅使商品…...

DSOX6004A是德科技DSOX6004A示波器
181/2461/8938产品概述: 特点: 是德科技DSOX6004A具有7合1集成功能,结合了数字通道、串行协议分析、内置双通道波形发生器、频率响应分析、内置数字万用表和带累加器的内置10位计数器。1千兆赫至6千兆赫4个模拟通道在12.1英寸电容式多点触摸屏上轻松查…...
golang 使用 cipher、aes 实现 oauth2 验证
在Go语言中,crypto/cipher包提供了加密和解密消息的功能。这个包实现了各种加密算法,如AES、DES、3DES、RC4等,以及相应的模式,如ECB、CBC、CFB、OFB、CTR等。以下是如何使用crypto/cipher包进行加密和解密操作的基本步骤…...

LLMs之FreeGPT35:FreeGPT35的简介、安装和使用方法、案例应用之详细攻略
LLMs之FreeGPT35:FreeGPT35的简介、安装和使用方法、案例应用之详细攻略 目录 FreeGPT35的简介 FreeGPT35的安装和使用方法 1、部署和启动服务 Node 2、使用 Docker 部署服务: 运行 Docker 容器以部署服务 使用 Docker Compose 进行更方便的容器化…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...