ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录

news/2024/7/24 11:40:52 标签: ios

文章目录

  • 截图
  • 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 in
            make.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 = self
        authorizationController.presentationContextProvider = self
        authorizationController.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
            //名字只有第一登录的时候可以获取到,后面都是nil
            let fullName = credential.fullName
            let 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 应用中成功集成苹果登录功能。


http://www.niftyadmin.cn/n/5476989.html

相关文章

Node.js从基础到高级运用】二十二、同步执行的子进程

引言 在 Node.js 的应用程序中,我们有时候需要在父进程中同步地执行子进程,这对于需要顺序执行任务或者处理命令行工具的输出特别有用。child_process 模块在 Node.js 中用于创建子进程,并且提供了几种同步执行子进程的方法。在 Windows 系统…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑

引言 在 iOS 开发中,将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下,我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而,如果你没有 Mac 电脑,也没有关系,本文将介绍一…

企业版ChatGPT用户激增至60万;百度文心一言推出个性化声音定制功能

🦉 AI新闻 🚀 企业版ChatGPT用户激增至60万 摘要:OpenAI首席运营官Brad Lightcap在接受采访时透露,企业版ChatGPT的注册用户已超60万,相较2024年1月的15万用户,短短三个月内增长了300%。这一版本自2023年…

Docker速成:新手变专家!

Docker介绍 容器历史 1、Chroot Jail 就是常见的chroot命令的用法。它在1979年的时候就出现了,被认为是最早的容器化技术之一。它可以把一个进程的文件系统隔离起来。 2、The FreeBSD Jail (监狱)实现了操作系统级别的虚拟化,他…

AI日报:北大Open Sora视频生成更强了;文心一言可以定制你自己的声音;天工 SkyMusic即将免费开放;

🤖📱💼AI应用 北大Open Sora视频生成更强了!时长可达10秒,分辨率更高 【AiBase提要:】 ⭐️ Open-Sora-Plan v1.0.0模型发布 显著提升视频生成质量和文本控制能力 ⭐️ 支持华为昇腾910b芯片,提升运行效率和质量。 ⭐…

蓝桥杯物联网竞赛_STM32L071_16_EEPROM

仍然是没有考过的知识点 朴素的讲就是板子中一块不会因为断电重启而导致数值初始化的一片地址 要注意的是有时候容易把板子什么写错导致板子什么地址写坏了导致程序无法烧录,这个时候记得一直按flash键烧录,烧录时会报错,点击确定&#xff0…

面试算法-154-搜索二维矩阵 II

题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

CSS:CSS的基础了解

css概述 CSS(Cascading Style Sheets,层叠样式表) 是用于控制网页样式和布局的一种样式表语言。用于描述网页的样式和布局,包括字体、颜色、大小、间距、边框等方面。 前端三🗡客:HTML,CSS,JavaScript&am…