설정
애플 개발자 사이트로 이동하여 [Identifires] 메뉴를 클릭하여 리스트에서 애플 아이디로 로그인을 구성할 앱을 선택합니다.
선택된 앱에서 [Sign In with Apple] 항목을 선택하여 활성화합니다.
[Keys] 메뉴를 클릭하여 발급된 해당앱의 AuthKey를 확인합니다.
[Xcode] - [Target Project] - [Signing & Capabilities] - [+Capability] 메뉴를 클릭하여 Sign In with Apple 항목을 추가합니다.
로그인 구현하기
애플 아이디로 로그인을 추가할 ViewController에서 아래 모듈을 Import 해 줍니다.
import AuthenticationServices
ViewController와 연결되는 StoryBoard에 UIButton을 추가하고 해당 버튼의 클래스명을 ASAuthorizationAppleIDButton으로 변경합니다.
import AuthenticationServices
class ViewController: UIViewController {
@IBOutlet weak var appleLoginButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func appleLogin() {
let request = ASAuthorizationAppleIDProvider().createRequest()
request.requestedScopes = [.fullName, .email]
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self as? ASAuthorizationControllerDelegate
controller.presentationContextProvider = self as? ASAuthorizationControllerPresentationContextProviding
controller.performRequests()
}
}
extension ViewController : ASAuthorizationControllerDelegate {
// 성공 후 동작
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let credential = authorization.credential as? ASAuthorizationAppleIDCredential {
let idToken = credential.identityToken!
let tokeStr = String(data: idToken, encoding: .utf8)
print(tokeStr)
guard let code = credential.authorizationCode else { return }
let codeStr = String(data: code, encoding: .utf8)
print(codeStr)
let user = credential.user
print(user)
}
}
// 실패 후 동작
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("error")
}
}
위 소스에서는 애플 아이디로 로그인 버튼(appleLoginButton)을 추가하고 해당 버튼에 appleLogin Action을 연결하였습니다.
버튼을 클릭하게 되면 ASAuthorizationController를 통해 request를 생성하여 로그인 요청을 보냅니다.
ASAuthorizationControllerDelegate를 구현하여 결과를 리턴 받습니다.
'Topic > Auth' 카테고리의 다른 글
| 카카오 로그인 - Android (0) | 2024.06.04 |
|---|---|
| 구글 아이디로 로그인 - iOS (0) | 2024.06.03 |
| 카카오 로그인 - iOS (1) | 2024.06.03 |