Middle+
Kā īstenot autorizāciju caur Apple iOS lietotnē?
sobes.tech AI
Atbilde no AI
Apple (Sign In with Apple) autorizācijas īstenošanai iOS lietotnē ir nepieciešami šādi soļi:
-
Konfigurējiet lietotni Apple Developer Portal:
- Iespējojiet "Sign In with Apple" iespēju jūsu App ID.
- Ģenerējiet vai atjauniniet Provisioning Profile ar šo iespēju.
-
Pievienojiet "Sign In with Apple" iespēju Xcode projektā.
-
Izmantojiet
AuthenticationServicesframework'u.
Piemēra kods autorizācijas pieprasījuma uzsākšanai:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
// Izveidojam nodrošinātāju
let appleIDProvider = ASAuthorizationAppleIDProvider()
// Izveidojam pieprasījumus
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email] // Pieprasām lietotāja vārdu un e-pastu
// Izveidojam kontrolieri pieprasījumu apstrādei
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
// Iestatām delegātus
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
// Sākam autorizācijas procesu
authorizationController.performRequests()
}
// Delegātu īstenošana
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
// Veiksmīga autorizācija
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user // Unikāls lietotāja identifikators
let fullName = appleIDCredential.fullName // Vārds
let email = appleIDCredential.email // E-pasts
// Šos datus var nosūtīt uz jūsu serveri
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
// Lietotājs izmantoja saglabātos paroles datus
let username = passwordCredential.user
let password = passwordCredential.password
// Šos datus var izmantot pieslēgšanai
print("Username: \(username)")
print("Password: \(password)")
}
}
// Kļūdas apstrāde
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Sign in with Apple failed: \(error.localizedDescription)")
// Šeit apstrādājam kļūdas
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
// Nodrošina logu, kurā tiks rādīts autorizācijas interfeiss
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window! // Svarīgi atgriezt NE nil logu
}
}
// Piezīme: YourViewController ir jāīsteno nepieciešamie protokoli.
- Apstrādājiet datus, kas iegūti pēc veiksmīgas autorizācijas:
- Izmantojiet
userIdentifierunikālas lietotāja identifikācijai Apple. fullNameunemailir pieejami tikai pirmajā pieslēgšanās reizē un jāuzglabā.- Nosūtiet
userIdentifier,identityToken(informācija servera verifikācijai) unauthorizationCodeuz jūsu serveri verifikācijai un lietotāja konta izveidei/saišanai. - Serverim jāverificē
identityTokenar Apple, lai pārliecinātos par pieprasījuma autentiskumu.
- Izmantojiet
Papildus galvenajai autorizācijai ir svarīgi īstenot:
- Lietotāja autorizācijas stāvokļa pārvaldību (piemēram, caur
ASAuthorizationAppleIDProvider().getCredentialState). - Lietotāja atsaukšanas iespēju.
- Sadarbību ar jūsu backend, lai izveidotu/autentificētu lietotāju pēc veiksmīgas autorizācijas.
Piezīme: Sign In with Apple ir pieejams tikai ierīcēs ar iOS 13 / macOS Catalina un jaunākām versijām. Vecākām OS versijām nepieciešams rezerves autentifikācijas mehānisms.