-
Notifications
You must be signed in to change notification settings - Fork 5
Apple OAuth
songju edited this page Nov 3, 2020
·
1 revision
2020.10.31 토요일
-
AuthenticationServices
-
Project Target
->Signing & Capabilities
->+ Capability
click ->Sign in with Apple
추가 -
Button 생성
lazy var signInButton: ASAuthorizationAppleIDButton = { let button = ASAuthorizationAppleIDButton() return button }()
-
Button에 Action을 추가
//MARK:- configureSignInButton() signInButton.addTarget(self, action: #selector(signUpButtonTouched), for: .touchUpInside) @objc private func signUpButtonTouched() { 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
설정-
didCompleteWithAuthorization
: 성공했을 경우-
authorization
를 통해 사용자의 정보를 받아올 수 있다.
if let appleIDToken = authorization.credential as? ASAuthorizationAppleIDCredential { ... 생략 ... }
-
-
didCompleteWithError
: 실패했을 경우
**주의사항 처음 로그인 시에만 fullName, email 변수를 받아올 수 있고 이 후 로그인 시에는 nil값을 받아오기 때문에 처음 로그인 할 경우 fullName, email 값을 따로 저장해 두어야 한다. keychain에 저장하라고 하는데 정확히는 모르겠다...
-
-
ASAuthorizationControllerPresentationContextProviding
설정-
presentationAnchor()
: 로그인 뷰를 띄우는 곳을 설정?
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { guard let window = view.window else { return ASPresentationAnchor() } return window }
-
-