Sobes.tech
Middle+

iOS тиркемесинде Apple аркылуу авторизацияны кантип ишке ашыруу керек?

sobes.tech AI

AIден жооп

Apple (Sign In with Apple) аркылуу авторизацияны iOS тиркемесинде ишке ашыруу үчүн төмөнкү кадамдар керек:

  1. Тиркемени Apple Developer Portal'до настройкалаңыз:

    • "Sign In with Apple" мүмкүнчүлүгүн App ID үчүн активдештириңиз.
    • Provisioning Profile'ды ушул мүмкүнчүлүк менен түзүңүз же жаңыртыңыз.
  2. Xcode долбооруна "Sign In with Apple" мүмкүнчүлүгүн кошуңуз.

  3. AuthenticationServices framework'ин колдонуңуз.

Авторизация суранышын баштоо үчүн код мисалы:

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 // Уникалдуу идентификатор
            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! // Мөөнөттүү: терезе нөл эмес болушу керек
    }
}

// Эскертүү: YourViewController керек болгон протоколдорду ишке ашырышы керек.
  1. Ийгиликтүү авторизациядан кийин алынган маалыматтарды иштетүү:
    • userIdentifier колдонуп, колдонуучуну уникалдуу аныктоо
    • fullName жана email биринчи кирүүдө гана жеткиликтүү жана сактоо керек
    • userIdentifier, identityToken (серверде текшерүү үчүн маалыматтар камтылган) жана authorizationCode серверге жөнөтүңүз
    • Сервер identityToken-ду Apple менен текшериши керек, суроонун чындыкка дал келүүсүн камсыздоо үчүн

Негизги авторизациядан тышкары, ошондой эле:

  • Колдонуучунун авторизация абалын иштетүү (мисалы, ASAuthorizationAppleIDProvider().getCredentialState аркылуу)
  • Колдонуучунун авторизацияны кайтаруу мүмкүнчүлүгүн камсыздоо
  • Сиздин бэкенд менен иштөө, авторизация ийгиликтүү өткөндөн кийин колдонуучуну түзүү/текшерүү үчүн

Эскертүү: Sign In with Apple гана iOS 13 / macOS Catalina жана андан кийинки версияларда жеткиликтүү. Эски версиялар үчүн резервдүү механизм керек.