Middle+
Ինչպես իրականացնել Apple-ի միջոցով հաստատումը iOS հավելվածում?
sobes.tech AI
Պատասխան AI-ից
Apple (Sign In with Apple) միջոցով հաստատում իրականացնելու համար iOS հավելվածում անհրաժեշտ են հետևյալ քայլերը:
-
Կարգավորեք հավելվածը Apple Developer Portal-ում:
- Ակտիվացրեք "Sign In with Apple" հնարավորությունը ձեր App ID-ի համար:
- Գեներացրեք կամ թարմացրեք Provisioning Profile-ը այս հնարավորությամբ:
-
Ավելացրեք "Sign In with Apple" հնարավորությունը Xcode նախագծում:
-
Օգտագործեք
AuthenticationServicesֆրեյմվորկը:
Նմուշ կոդ՝ հաստատման հարցում սկսելու համար:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
// Ստեղծում ենք պրովայդեր
let appleIDProvider = ASAuthorizationAppleIDProvider()
// Ստեղծում ենք հարցումներ
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email] // Հարցում ենք օգտատիրոջ անունը և էլեկտրոնային հասցեն
// Ստեղծում ենք վերահսկող, որը կվերահսկի հարցումների կատարմանը
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
// Կարգավորում ենք դելեգատները
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
// Սկսում ենք հաստատման գործընթացը
authorizationController.performRequests()
}
// Դելեգատների իրականացման համար
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
// Ուղղակի հաստատում
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user // Անհատական ID
let fullName = appleIDCredential.fullName // Անուն
let email = appleIDCredential.email // Էլեկտրոնային հասցե
// Կարող եք ուղարկել այս տվյալները ձեր սերվերին
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
// Օգտատերը օգտագործել է պահված գաղտնաբառեր
let username = passwordCredential.user
let password = passwordCredential.password
// Կարող եք օգտագործել այս տվյալները մուտք գործելու համար
print("Username: \(username)")
print("Password: \(password)")
}
}
// Հաշվառման սխալ
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Sign in with Apple failed: \(error.localizedDescription)")
// Այստեղ կարող եք մշակել սխալները
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
// Տվյալ պատուհանը, որի վրա կցուցադրվի հաստատման ինտերֆեյսը
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window! // Կարևոր է վերադարձնել ոչ թե nil window
}
}
// Հիշեցում՝ YourViewController-ը պետք է իրականացնել անհրաժեշտ պրոտոկոլները:
// `ASAuthorizationControllerDelegate` և `ASAuthorizationControllerPresentationContextProviding`
- Հաշվառման հաջողության դեպքում ստացված տվյալները մշակել:
- Օգտագործեք
userIdentifier՝ օգտագործողի Apple-յան նույնականացման համար: fullNameևemailհասանելի են միայն առաջին մուտքի ժամանակ՝ այս օգտատիրոջ և ձեր հավելվածի համար։ Պահպանեք դրանք:- Ուղարկեք
userIdentifier,identityToken(պատրաստված է վավերացման համար) ևauthorizationCodeձեր սերվերին՝ վավերացման և օգտագործողի հաշվի ստեղծման/կապելու համար: - Սերվերը պետք է վավերացնի
identityToken-ը Apple- ի հետ՝ համոզվելու համար, որ հարցումը իսկական է:
- Օգտագործեք
Բացի հիմնական հաստատումից, կարևոր է նաև իրականացնել՝
- Օգտատիրոջ հաստատման վիճակի մշակում (օրինակ՝
ASAuthorizationAppleIDProvider().getCredentialState): - Օգտատիրոջ կողմից հաստատման վերացումը:
- Ձեր բեքենդի հետ փոխազդեցություն՝ օգտագործողի ստեղծում/վավերացում հաստատումից հետո:
Նշում՝ Sign In with Apple հասանելի է միայն iOS 13 / macOS Catalina և նոր տարբերակների սարքերում։ Հին օպերացիոն համակարգերի համար անհրաժեշտ է պահուստային մեխանիզմ։