iOS开发 - 集成苹果登录功能(Sign In With Apple)

一、 配置项目使其支持苹果登录功能

配置Identifiers

链接

找到项目对应的id,点击进入编辑页面,选中此项

Sign In With Apple

重新生成Profiles(执行上一步操作之后,描述文件会过期),点进去之后保存一下,下载下来双击激活就ok了

配置项目

配置项目1

配置项目2

二、代码部分

苹果登录按钮(必须要使用苹果提供的按钮,不能使用UIButton 否则可能会被拒)

注:有的文章说如果样式和系统的差不大多的话也可以,这个笔者没有做验证,第一次使用UIButton的时候是被拒了

注意:苹果登录只在iOS13之后可用

importAuthenticationServicesfuncsetupLoginB(){if#available(iOS13.0,*){letappleIdLoginB=ASAuthorizationAppleIDButton(authorizationButtonType:.signIn,authorizationButtonStyle:.black)appleIdLoginB.cornerRadius=20appleIdLoginB.addTarget(self,action:#selector(appleIdLoginAction),for:.touchUpInside)addSubview(appleIdLoginB)}}

登录的逻辑

@objcfuncappleIdLoginAction(){if#available(iOS13.0,*){letappleIDProvider=ASAuthorizationAppleIDProvider()letrequest=appleIDProvider.createRequest()request.requestedScopes=[.fullName,.email]letauth=ASAuthorizationController(authorizationRequests:[request])auth.delegate=selfauth.presentationContextProvider=selfauth.performRequests()}}

实现代理

extensionLoginController:ASAuthorizationControllerDelegate,ASAuthorizationControllerPresentationContextProviding{@available(iOS13.0,*)funcpresentationAnchor(forcontroller:ASAuthorizationController)->ASPresentationAnchor{returnself.view.window!}@available(iOS13.0,*)funcauthorizationController(controller:ASAuthorizationController,didCompleteWithAuthorization authorization:ASAuthorization){varuser:String?=nilifletapple=authorization.credentialas?ASAuthorizationAppleIDCredential{user=apple.user}elseifletpassword=authorization.credentialas?ASPasswordCredential{user=password.user}guardletu=userelse{makeToast("苹果登陆异常!");return}// 将u传给后台来进行后续操作// 后台根据需求来判断是否需要去验证user 笔者暂时没有做验证 只是暂时将user绑定,审核暂时没有问题}@available(iOS13.0,*)funcauthorizationController(controller:ASAuthorizationController,didCompleteWithError error:Error){print(error)}}

你可能感兴趣的:(iOS开发 - 集成苹果登录功能(Sign In With Apple))