Sign In with Apple(蘋果官方文檔):iOS 13 新增功能
背景:審核備注:App審核文檔坏为,所以在iOS13以后用到第三方登錄的App摹察,盡量要加入蘋果登錄斥黑,否則審核有可能被拒
Sign In with Apple will be available for beta testing this summer. It will be required as an option for users in apps that support third-party sign-in when it is commercially available later this year.
也就是說,當(dāng) Sign In with Apple 服務(wù)正式上線以后,所有已接入其它第三方登錄的 App,Sign In with Apple 將被要求作為一種登錄選擇庇勃,否則有可能就不給過。
前期準(zhǔn)備:
在蘋果后臺(tái)打開 Sign In with Apple 選項(xiàng)槽驶,重新生成 profile 配置文件
Xcode— Sign&Capabilities 中點(diǎn)擊 Capability 選擇 Sign In with Apple 選項(xiàng)
開發(fā) Sign In with Apple 流程:
1责嚷、添加 Sign In with Apple 按鈕,設(shè)置 ASAuthorizationAppleIDButton 相關(guān)布局掂铐,也可自定義按鈕樣式
2罕拂、
處理授權(quán)
已經(jīng)使用 Sign In with Apple 登錄過 app的用戶,如果設(shè)備中存在 iCloud Keychain 憑證 或者 AppleID 憑證堡纬,提示用戶直接使用 TouchID 或 FaceID 登錄
3聂受、獲取授權(quán)碼?
提供用于展示授權(quán)頁面的window
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {}
授權(quán)成功
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {}
授權(quán)失敗
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {}
授權(quán)成功回調(diào)蒿秦,
UserID:蘋果用戶唯一標(biāo)識(shí)符烤镐,該值在同一個(gè)開發(fā)者賬號(hào)下的所有App下是一樣的,可以把這個(gè)關(guān)聯(lián)上后臺(tái)系統(tǒng)的賬號(hào)體系棍鳖,綁定起來
Verification Data:(identity touch\code)——(identityTokenStr/authorizationCodeStr)驗(yàn)證數(shù)據(jù)炮叶,用于傳給后臺(tái)服務(wù)器碗旅,然后服務(wù)器調(diào)用蘋果 API 去校驗(yàn)授權(quán)碼,如果驗(yàn)證成功镜悉,可以根據(jù) userIdentifier 判斷賬號(hào)是否已存在祟辟,若存在,則返回自己賬號(hào)系統(tǒng)的登錄態(tài)侣肄、若不存在旧困,則創(chuàng)建新的賬號(hào),并返回對(duì)應(yīng)的登錄狀態(tài)給 App
Account information:name稼锅、verified email 蘋果用戶信息吼具,包括全名、郵箱等矩距。注意:如果玩家登錄時(shí)拒絕提供真實(shí)的郵箱賬號(hào)拗盒,蘋果會(huì)生成虛擬的郵箱賬號(hào)
總結(jié):使用范圍:iOS 13 以上 使用方式:和第三方微信登錄一樣,獲取到服務(wù)器驗(yàn)證需要使用的參數(shù)——Verification Data?傳輸給服務(wù)端锥债,用來判斷用戶的狀態(tài)陡蝇,userid 來作為蘋果用戶的唯一標(biāo)識(shí)符,用來和服務(wù)端的賬戶體系綁定關(guān)聯(lián)