import UIKit
import AuthenticationServices
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupView()
}
func setupView() {
let appleButton = ASAuthorizationAppleIDButton() // 버튼 생성
appleButton.translatesAutoresizingMaskIntoConstraints = false
appleButton.addTarget(self, action: #selector(didTapAppleButton), for: .touchUpInside)
view.addSubview(appleButton)
NSLayoutConstraint.activate([
appleButton.centerYAnchor.constraint(equalTo: view.centerYAnchor),
appleButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 30),
appleButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -30)
])
}
@objc
func didTapAppleButton() {
let provider = ASAuthorizationAppleIDProvider()
let request = provider.createRequest()
request.requestedScopes = [.fullName, .email]
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self
controller.presentationContextProvider = self
controller.performRequests()
}
}
extension ViewController: ASAuthorizationControllerDelegate {
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
switch authorization.credential {
case let credentials as ASAuthorizationAppleIDCredential:
let user = User(credentials: credentials)
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MainViewController") as! MainViewController
vc.user = user
self.present(vc, animated: true, completion: nil)
default:
break
}
}
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("something bad happened", error)
}
}
extension ViewController: ASAuthorizationControllerPresentationContextProviding {
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window!
}
}