一、 配置項目使其支持蘋果登錄功能
配置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)}}