Swift Sign in with Apple 2020.06.16更新

剛開始學(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!
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容