剛開始學(xué)習接入蘋果登錄,網(wǎng)上搜索了一些帖子,沒一個直接可用的,帖子質(zhì)量我就不吐槽了。
只好去蘋果開發(fā)者官網(wǎng)去探索,官網(wǎng)提供了demo,下載、運行一次通過。
demo里與我無關(guān)的代碼,都刪掉了,只剩下簡簡單單幾十行即可實現(xiàn)蘋果登錄。
第一次寫技術(shù)帖子,如果覺得內(nèi)容質(zhì)量不錯,請點個贊再走哦!?。?/p>
有兩處需要配置:
蘋果開發(fā)者后臺Identifiers需要選中Sign in with Apple后保存即可(前提是Xcode里設(shè)置的Automatically manage signing)。
項目TARGETS -> Signing & Capabilities需要添加Sign in with Apple。
項目代碼如下,可直接復(fù)制使用:
import UIKit
import AuthenticationServices//導(dǎo)入蘋果認證服務(wù)框架
class LoginAppleVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
//顯示Apple ID登錄窗口,一般是點擊蘋果登錄按鈕后彈出
//我是為了方便演示,所以放在這里
performExistingAccountSetupFlows()
}
//顯示Apple ID登錄窗口
func performExistingAccountSetupFlows() {
let requests = [ASAuthorizationAppleIDProvider().createRequest()]//我只用到ID登錄
let authorizationController = ASAuthorizationController(authorizationRequests: requests)
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
authorizationController.performRequests()
}
}
//擴展LoginAppleVC
extension LoginAppleVC: ASAuthorizationControllerDelegate {
//授權(quán)成功回調(diào)
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
switch authorization.credential {
case let appleIDCredential as ASAuthorizationAppleIDCredential://我只用到ID登錄
//獲取的userIdentifier可接入自己的賬戶系統(tǒng),我用的LeanCloud平臺
//我只需要userIdentifier
let userIdentifier = appleIDCredential.user
print("授權(quán)成功:userIdentifier = \(userIdentifier)")
default:
break
}
}
//授權(quán)失敗回調(diào)
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
//處理錯誤
print("授權(quán)失?。篹rror = \(error)")
}
}
extension LoginAppleVC: ASAuthorizationControllerPresentationContextProviding {
//提供彈窗根視圖
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return self.view.window!
}
}