Войти через Apple: как добиться этого для существующего приложения? - PullRequest
1 голос
/ 04 июня 2019

С недавними крупными обновлениями, выпущенными Apple 3 июня 2019 года, появилась одна функция Вход через Apple .Информация о том, «как использовать это» в приложении, доступна, но я могу увидеть любой пример исходного кода, как реализовать эту функцию в существующем приложении iOS.

Я ищу образец исходного кода, так как яне могу понять, с чего начать.

И что я пробовал: Войти через Apple

1 Ответ

4 голосов
/ 04 июня 2019

Первый шаг - вам нужно import AuthenticationServices

Как проверить это учетное состояние пользователя

        let appleIDProvider = ASAuthorizationAppleIDProvider()
        appleIDProvider.getCredentialState(forUserID: KeychainItem.currentUserIdentifier) { (credentialState, error) in
            switch credentialState {
            case .authorized:
                // The Apple ID credential is valid.
                break
            case .revoked:
                // The Apple ID credential is revoked.
                break
            case .notFound:
                // No credential was found, so show the sign-in UI.

            default:
                break
            }
        }

Как создать вход в систему с помощью Apple

Шаг 1

Запрашивает пользователя, если найдены существующие учетные данные iCloud Keychain или Apple ID.внедрить ASAuthorizationControllerDelegate в

func performExistingAccountSetupFlows() {
    // Prepare requests for both Apple ID and password providers.
    let requests = [ASAuthorizationAppleIDProvider().createRequest(),
                    ASAuthorizationPasswordProvider().createRequest()]

    // Create an authorization controller with the given requests.
    let authorizationController = ASAuthorizationController(authorizationRequests: requests)
    authorizationController.delegate = self
    authorizationController.presentationContextProvider = self
    authorizationController.performRequests()
}

extension ViewController: ASAuthorizationControllerDelegate {
    func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
        if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
         //here is credentials . 
        }
    }
}

extension ViewController: ASAuthorizationControllerPresentationContextProviding {
    func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
        return self.view.window!
    }
}

Step2 :

кнопка создания

    let authorizationButton = ASAuthorizationAppleIDButton()
    authorizationButton.addTarget(self, action: #selector(handleAuthorizationAppleIDButtonPress), for: .touchUpInside)

Step3

@objc
func handleAuthorizationAppleIDButtonPress() {
    let appleIDProvider = ASAuthorizationAppleIDProvider()
    let request = appleIDProvider.createRequest()
    request.requestedScopes = [.fullName, .email]

    let authorizationController = ASAuthorizationController(authorizationRequests: [request])
    authorizationController.delegate = self
    authorizationController.presentationContextProvider = self
    authorizationController.performRequests()
}

Доступность : iOS 13 или выше

Демонстрационное приложение : Полное рабочее демонстрационное приложение с интеграцией цепочки для ключей, доступное на Github -https://github.com/developerinsider/Sign-In-with-Apple-Demo

Примечание: Я скоро обновлю ответ более полезной информацией.

Надеюсь, что это полезно.

...