ios--引入Apple登錄sign in with Apple

ios13比較大的變化,蘋果推出了自己的第三方登錄。

sign in with Apple

Apple login免輸入用戶名密碼,用很高的安全性,支持蘋果所有的平臺和web端


1,使用

加入支持庫AuthenticationServices.framework

引用之

import AuthenticationServices

在工程的Signing & Capabilities中確認支持sign in with Apple

檢查授權是否過期

let appleIDProvider = ASAuthorizationAppleIDProvider()

appleIDProvider.getCredentialState(forUserID:KeychainItem.currentUserIdentifier) { (credentialState, error)in

? ? ? ? ? ? switchcredentialState {

? ? ? ? ? ? case.authorized:

? ? ? ? ? ? ? ? // The Apple ID credential is valid.

? ? ? ? ? ? ? ? break

? ? ? ? ? ? case.revoked:

? ? ? ? ? ? ? ? // The Apple ID credential is revoked.

? ? ? ? ? ? ? ? break

? ? ? ? ? ? case.notFound:

? ? ? ? ? ? ? ? // No credential was found, so show the sign-in UI.

? ? ? ? ? ? default:

? ? ? ? ? ? ? ? break

? ? ? ? ? ? }

? ? ? ? }

頁面出現(xiàn)時檢查授權和賦值delegate

let requests = [ASAuthorizationAppleIDProvider().createRequest(),

? ? ? ? ? ? ? ? ? ? ? ? ASAuthorizationPasswordProvider().createRequest()]


? ? ? ? // Create an authorization controller with the given requests.

? ? ? ? letauthorizationController =ASAuthorizationController(authorizationRequests: requests)

? ? ? ? authorizationController.delegate=self

? ? ? ? authorizationController.presentationContextProvider=self

? ? ? ? authorizationController.performRequests()

點擊按鈕觸發(fā)事件

let appleIDProvider = ASAuthorizationAppleIDProvider()

? ? ? ? letrequest = appleIDProvider.createRequest()

? ? ? ? request.requestedScopes = [.fullName, .email]

//用戶昵稱 ?郵箱

? ? ? ? letauthorizationController =ASAuthorizationController(authorizationRequests: [request])

? ? ? ? authorizationController.delegate=self

? ? ? ? authorizationController.presentationContextProvider=self

? ? ? ? authorizationController.performRequests()

實現(xiàn)delegate下的方法,獲取AppleID數(shù)據(jù)

func authorizationController(controller:ASAuthorizationController, didCompleteWithAuthorization authorization:ASAuthorization) {

? ? ? ? if let appleIDCredential = authorization.credentialas?ASAuthorizationAppleIDCredential{

? ? ? ? ? ? letuserIdentifier = appleIDCredential.user

? ? ? ? ? ? letfullName = appleIDCredential.fullName

? ? ? ? ? ? letemail = appleIDCredential.email

????????????//獲取到的user、fullName、email

? ? ? ? ? ? // Create an account in your system.

? ? ? ?}elseifletpasswordCredential = authorization.credentialas?ASPasswordCredential{

? ? ? ? ? ? // Sign in using an existing iCloud Keychain credential.

? ? ? ? }

? ?}


? ? funcauthorizationController(controller:ASAuthorizationController, didCompleteWithError error:Error) {

? ? ? ? // Handle error.

? ? }



2,注意

如果App中使用第三方登錄的,蘋果要求必須實現(xiàn)Apple login,這是強制的??!

其他使用自身賬號登錄系統(tǒng)的不算在內。


遇到,了解,并記錄?。?/p>

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容