Middle+
Kuidas rakendada Apple'i kaudu autoriseerimist iOS rakenduses?
sobes.tech AI
Vastus AI-lt
Apple (Sign In with Apple) autoriseerimise rakendamiseks iOS rakenduses on vajalikud järgmised sammud:
-
Seadistage rakendus Apple Developer Portalis:
- Lülitage sisse võimalus "Sign In with Apple" teie App ID jaoks.
- Genereerige või uuendage Provisioning Profile selle võimalusega.
-
Lisage Xcode projekti võimalus "Sign In with Apple".
-
Kasutage
AuthenticationServicesraamistikku.
Näide koodist autoriseerimisnõude alustamiseks:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
// Looge pakkuja
let appleIDProvider = ASAuthorizationAppleIDProvider()
// Looge taotlused
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email] // Nõuame kasutaja nime ja e-posti
// Looge kontrollija taotluste töötlemiseks
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
// Määrake delegaadid
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
// Alustage autoriseerimisprotsessi
authorizationController.performRequests()
}
// Delegaatide rakendamine
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
// Edukas autoriseerimine
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user // Unikaalne kasutaja ID
let fullName = appleIDCredential.fullName // Nimi
let email = appleIDCredential.email // E-post
// Saate saata need andmed oma serverile
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
// Kasutaja kasutas salvestatud paroole iCloud Keychain'ist
let username = passwordCredential.user
let password = passwordCredential.password
// Saate neid andmeid kasutada sisselogimiseks
print("Username: \(username)")
print("Password: \(password)")
}
}
// Viga töötlemine
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Sign in with Apple failed: \(error.localizedDescription)")
// Siin töötleme vigu
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
// Pakub akent, kus kuvatakse autoriseerimise kasutajaliides
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window! // Oluline on tagastada mitte-nil window
}
}
// Märkus: YourViewController peab rakendama vajalikke protokolle.
- Töötle andmed, mis saadakse pärast edukat autoriseerimist:
- Kasutage
userIdentifierApple kasutaja unikaalseks identifitseerimiseks. fullNamejaemailon saadaval ainult esimesel sisselogimisel ning neid tuleks salvestada.- Saada
userIdentifier,identityToken(teave serveri verifitseerimiseks) jaauthorizationCodeoma serverile verifitseerimiseks ja kasutajakonto loomise/side jaoks. - Server peab verifitseerima
identityTokenApple'iga, et veenduda päringu ehtsuses.
- Kasutage
Lisaks põhivõimalusele on oluline rakendada:
- Kasutaja autoriseerimise oleku haldamine (näiteks
ASAuthorizationAppleIDProvider().getCredentialStatekaudu). - Kasutaja autoriseerimise tühistamise võimalus.
- Koostöö teie backend'iga kasutaja loomise/autoriseerimise jaoks pärast edukat Apple'i autoriseerimist.
Märkus: Sign In with Apple on saadaval ainult iOS 13 / macOS Catalina ja uuematel seadmetel. Vanemate OS-i versioonide jaoks on vaja varuautentimise mehhanismi.