애플로 로그인, 서버로 Apple ID 연동 해제 알림 받기

·2020년 9월 3일
2

간단 매뉴얼

목록 보기
2/3

요즘 회원가입 프로세스 간편화의 일환으로 소셜 로그인을 붙이고 있다. 대상은 애플과 카카오. 왜 갑자기 구글도 아닌 애플인가 싶었지만, 알고보니 올 4월부터 소셜 로그인 기능을 제공할 경우 반드시 애플 로그인 기능도 병행해서 제공해야만 앱스토어 심사를 통과할 수 있다고 한다.

함께 진행했던 카카오에 비해 애플이 조금 더 까다롭긴 하지만, 연동부터 로그인까지 대부분의 플로우는 문서를 따라 구현할 수 있다. 하지만 이상하게도 연동 해제와 관련된 부분은 그 어디에도 안내되고 있지 않아 며칠 (격하게) 고생한 끝에, 나와 비슷한 고통을 겪을 서버 개발자에게 조금이라도 도움이 되었으면 하는 마음을 담아 연동 해제와 관련된 설정을 정리해보았다.


 

endpoint 등록하기

Apple Developer 페이지로 들어가 Certificates, Identifiers & Profiles 중 Identifiers 에서 애플 로그인을 연동한 App ID 를 클릭한다.

그리고 Capabilities 리스트의 Sign In With Apple 에서 Edit 을 누른다.

(Edit 버튼이 보이지 않는다면 계정의 권한 문제이니 Admin 권한을 받아 접속하자)

모달창에서 Server to Server Notification Endpoint 항목을 확인할 수 있다.
예시와 같이 해제 알림을 받을 API 를 입력한 후 저장한다.
참고로 POST method 의 API 를 등록해야한다.
Edit your App ID Configuration 를 한 번 더 save 하는 것도 잊지 말자.

등록이 완료되었다!

 

request 형태

심플하게 payload 라는 필드로 jwt 토큰이 하나 전달된다.

{'payload': 'eyJradjacjdskrpzdigksmsep'}

토큰을 디코드하면 아래와 같은 구조로 되어있다고 소개되는데 (영상)

내가 받은 토큰은 조금 달랐다. 미묘하지만 events 가 배열이 아닌 객체였다.

{
	"iss": "https://appleid.apple.com/",
    	"aud": <Bundle Identifier>",
        "iat": 1508184845,
        "jti": "<unique events stream id>",
        "events" {
        	"type": "consent-revoked",
		"sub": "<user_id>",
		"event_time": 1508184845
        }

}

endpoint 등록하기 항목의 설정 페이지에 등록된 endpoint 에는 총 4가지 타입의 event 가 전달된다.

  • email-disabled : 유저가 이메일 수신을 중단했을 때
  • email-enabled : 유저가 이메일 수신을 활성화했을 때
  • consent-revoked : 유저가 Apple ID 연동 해제했을 때
  • account-delete : 유저가 Apple ID 를 삭제했을 때

 

API 로 아무런 요청도 들어오지 않아요 ?!

그렇다 ... 내게만 생긴 현상인지 모두가 종종 겪는 현상인지는 모르겠으나 나는 모든 설정을 등록하고도 며칠 동안 아무런 신호를 받지 못했다. 차라리 내부에서 생기는 문제면 해결이라도 할 텐데 아예 요청이 들어오지 않으니 보통 갑갑한게 아니었다.

(간절한 외침 How can I get!!!!)

애플 개발 지원센터부터 애플 개발자 포럼, stack overflow, 내가 아는 개발 커뮤니티 곳곳에 글을 뿌리며 물어봤지만 명쾌한 대답을 듣지 못했다. 설마 내가 작업하는 서버가 애플의 요건을 충족시키지 못했나 싶어 다른 서버에도 API 를 달고 다시 endpoint 를 등록하여 기다려보곤 했지만 역시나 소용이 없었는데 ...

거의 반 포기 상태였던 어느 날 로그를 확인해보니 새벽 사이에 요청이 한꺼번에! 들어와있었다!
지금까지 확인된 내용은 아래와 같다.

  • 설정 등록 후 실제 반영되기까지 시간이 걸린다.
    (나의 경우 2-3일이 걸렸는데, 이건 내가 이 서버 저 서버로 설정을 바꿔서 더 지연되었던게 아닐까 싶다)

  • 주기적으로 모든 요청을 일괄 처리하는 것으로 보인다. 유저가 연동을 해제했을 때 실시간으로 알림이 오는 것이 아니라 약간의 딜레이가 있을 수 있다.

설정과 동시에 요청이 들어오기 시작하는 카카오를 떠올리며 왜 요청이 오지 않을까 걱정을 하고 있다면 조금 기다려보자.


0개의 댓글