Topic/Auth

애플 아이디로 로그인

flatlab 2024. 6. 3. 14:44

설정

애플 개발자 사이트로 이동하여 [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