Sobes.tech
Middle+

Ինչպես իրականացնել Apple-ի միջոցով հաստատումը iOS հավելվածում?

sobes.tech AI

Պատասխան AI-ից

Apple (Sign In with Apple) միջոցով հաստատում իրականացնելու համար iOS հավելվածում անհրաժեշտ են հետևյալ քայլերը:

  1. Կարգավորեք հավելվածը Apple Developer Portal-ում:

    • Ակտիվացրեք "Sign In with Apple" հնարավորությունը ձեր App ID-ի համար:
    • Գեներացրեք կամ թարմացրեք Provisioning Profile-ը այս հնարավորությամբ:
  2. Ավելացրեք "Sign In with Apple" հնարավորությունը Xcode նախագծում:

  3. Օգտագործեք 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`
  1. Հաշվառման հաջողության դեպքում ստացված տվյալները մշակել:
    • Օգտագործեք userIdentifier՝ օգտագործողի Apple-յան նույնականացման համար:
    • fullName և email հասանելի են միայն առաջին մուտքի ժամանակ՝ այս օգտատիրոջ և ձեր հավելվածի համար։ Պահպանեք դրանք:
    • Ուղարկեք userIdentifier, identityToken (պատրաստված է վավերացման համար) և authorizationCode ձեր սերվերին՝ վավերացման և օգտագործողի հաշվի ստեղծման/կապելու համար:
    • Սերվերը պետք է վավերացնի identityToken-ը Apple- ի հետ՝ համոզվելու համար, որ հարցումը իսկական է:

Բացի հիմնական հաստատումից, կարևոր է նաև իրականացնել՝

  • Օգտատիրոջ հաստատման վիճակի մշակում (օրինակ՝ ASAuthorizationAppleIDProvider().getCredentialState):
  • Օգտատիրոջ կողմից հաստատման վերացումը:
  • Ձեր բեքենդի հետ փոխազդեցություն՝ օգտագործողի ստեղծում/վավերացում հաստատումից հետո:

Նշում՝ Sign In with Apple հասանելի է միայն iOS 13 / macOS Catalina և նոր տարբերակների սարքերում։ Հին օպերացիոն համակարգերի համար անհրաժեշտ է պահուստային մեխանիզմ։