ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift Apple Sign In 구현하기
    🧑‍💻/Swift 2023. 5. 10. 17:50
    반응형

    만약 내 앱이 타사 또는 소셜 로그인 서비스 제공한다면 Apple 로그인 기능도 필수적으로 제공해야 합니다.
    https://developer.apple.com/kr/app-store/review/guidelines/

    • 4.8 Apple로 로그인앱에서 사용자의 기본 계정을 설정 또는 인증하기 위해 타사 또는 소셜 로그인 서비스(Facebook 로그인, Google 로그인, Twitter로 로그인, LinkedIn으로 로그인, Amazon으로 로그인 또는 WeChat 로그인 등)를 사용하는 앱은 Apple로 로그인 역시 동등한 옵션으로 제공해야 합니다. 사용자의 기본 계정은 사용자 식별, 로그인, 앱의 기능 및 연결된 서비스에 접근하기 위한 목적으로 앱에 설정한 계정을 의미합니다.
      • 회사의 자체 계정 설정 및 로그인 시스템을 전용으로 사용하는 앱인 경우.
      • 사용자가 기존의 교육 또는 기업 계정을 사용해 로그인해야 하는 교육, 기업 또는 비즈니스 앱인 경우.
      • 정부 또는 업계 지원 주민 확인 시스템이나 전자 ID를 사용하여 사용자를 인증하는 앱인 경우.
      • 특정 타사 서비스의 클라이언트인 앱으로 사용자가 콘텐츠에 접근하려면 메일, 소셜 미디어 또는 기타 타사 계정에 직접 로그인해야 하는 경우.
    • Apple로 로그인은 다음 경우에 필요하지 않습니다.

    개인 프로젝트 진행하면서 간단한 로그인 기능을 구현할 때도 좋은 선택지가 될 것 같아요.


    Capability 추가

    Project > Signing & Capabilities > + Capability > Sign in with Apple를 추가합니다.

    추가하면 Identifier에 자동으로 체크됩니다.

     

    'Appe로 로그인' 버튼 생성

    white / black / whiteOutline

    Line 4. 로그인 버튼 생성

    let button = ASAuthorizationAppleIDButton(type: .signIn, style: .white)

    Apple로 로그인 버튼을 생성합니다.
    타입과 스타일을 지정할 수 있습니다.

    ASAuthorizationAppleIDButton.ButtonType

    • signIn (default) : Apple로 로그인
    • continue : Apple로 계속하기
    • signUp : Apple로 등록

    ASAuthorizationAppleIDButton.Style은 white, black, whiteOutline 세 가지가 가능합니다.
    로그인 버튼을 둥글게 하고 싶다면 Line 12 처럼 cornerRadius를 설정할 수 있습니다.

    Line 9. 버튼 클릭 액션 함수 지정

    button.addTarget(self, action: #selector(handleAppleIdRequest), for: .touchUpInside)

    버튼 클릭 시 호출될 action 함수를 지정하여 실제로 로그인을 진행합니다.

     

    Apple 로그인 요청

    앞서 버튼에 지정한 action 함수를 구현합니다.

    Line 12. 로그인 결과 처리

    authorizationController.delegate = self

    로그인 결과는 ASAuthorizationControllerDelegate를 채택하여 func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) 함수에서 받을 수 있습니다.

    AppleLoginButton.swift의 Line 3에서 ASAuthorizationControllerDelegate를 채택하였으므로 self 지정이 가능합니다.

    appleCredential에서 user, state, authorizedScopes, authorizationCode, identityToken, email, fullName, realUserStatus를 얻을 수 있습니다.

     

    난수 생성

    로그인 요청 시 nonce를 지정해야 합니다. 랜덤으로 난수를 생성하고 sha256으로 값을 해시합니다.

     


    전체 코드

     

    반응형

    댓글

Designed by Tistory.