기존에는 이 문서를 보고 토큰 revoke url을 사용했다.
기존 참고 문서 - Account & Organizational Data Sharing / Revoke tokens

그러나, 클라이언트 측에서 회원 탈퇴가 되었으면 이후 재가입 시 이메일 공유 여부부터 다시 받아야 하는데, 이메일 여부는 그대로 둔다고 하여 제대로 탈퇴가 되지 않은 것 같다고 하는 것이었다...!
신규 참고 문서 - Sign in with Apple REST API - Revoke tokens

들어가는 HTTP Body와 모든 것이 동일한데, 엔드포인트만 딱 다르다.
두 엔드포인트의 차이는 뭘까?
제대로 알아보기 전에 구글에 다음과 같은 제목으로 검색을 해보니 우리의 친절한 재민(Gemini)씨가 답을 해주었다.

Apple /auth/oauth2/v2/revoke는 액세스 토큰이 더 이상 필요하지 않음을 나타내는 데 사용되며, Apple /auth/revoke는 더 이상 앱과 연결되지 않은 사용자의 토큰을 무효화하는 데 사용됩니다.
목적
Apple /auth/oauth2/v2/revoke
클라이언트가 로그아웃할 수 있도록 허용하여 인증 서버가 보안 자격 증명을 정리할 수 있도록 합니다
Apple /auth/revoke
더 이상 앱과 연결되지 않은 사용자에 대한 토큰 및 관련 사용자 권한을 무효화합니다작동 방식
사용자 ID로 토큰을 해지하려면 액세스 토큰에 사용자 ID를 추가하도록 OAuth 2.0 정책을 구성합니다
OAuth 토큰은 엔드포인트 oauth/v2/token/revoke에 POST 요청을 하면 프로그램적으로 취소할 수 있습니다
액세스 토큰과 새로 고침 토큰 모두 취소할 수 있습니다
액세스 토큰이 새로 고침 토큰을 사용하여 취소되면 해당 새로 고침 토큰도 취소됩니다
Apple의 문서에 따르면 Apple /auth/revoke를 사용하여 더 이상 앱과 연결되지 않은 사용자에 대한 토큰 및 관련 사용자 권한을 무효화할 수 있습니다.
재민씨는 /auth/oauth2/v2/revoke는 로그아웃 시 활용하고, /auth/revoke가 탈퇴 시 활용한다고 설명한다.
아직은 무슨 말인지 감이 잘 잡히지 않는다.
애플 공식문서에서는 두 문서의 내용이 들어가있는 범주가 다르다.
![]() | ![]() |
|---|
이름만 봐도 Apple 소셜 로그인을 활용하는 우리는 오른쪽의 Sign in with Apple REST API를 사용해야 할 것 같다. 나는 이 문서의 존재를 나중에 알았다.
일단 Revoke tokens의 경우, 오른쪽 문서를 활용해야만 정상적으로 앱 서비스 탈퇴가 이루어졌다.
그러면 왼쪽 문서에 나온대로 token을 받아와서 오른쪽 문서의 탈퇴 요청에 token을 담아서 보내면 달라지나? Revoke tokens가 아니라 Generate and validate tokens의 경우에는 응답하는 토큰이 어떻게 다른가?에 대해 생각이 들었다. 토큰이 다르다면 다른 엔드포인트들도 교체해주어야 하기 때문이다.
Account & Organizational Data Sharing은 "Apple" 서비스를 사용하기 위한 API들을 정리한 문서이고,
Sign in with Apple REST API는 "Apple의 Sign in" 서비스를 사용하기 위한 API들을 정리한 문서이다.

좀 더 쉽게 설명하면 Account & Organizational Data Sharing을 사용해서 token을 받아오면 이 token으로는 Apple의 여러 다양한 서비스(Roster API, Siri 등)을 사용하기 위해 필요한 토큰을 발급해주는 것이고,
Sign in with Apple REST API는 Apple Login을 위해 필요한 토큰을 발급해주는 것이니 Account & Organizational Data Sharing이 좀 더 큰 범위라고 볼 수 있다.
그렇기 때문에 Account & Organizational Data Sharing에서 Revoke tokens를 하면 Apple 서비스를 사용할 수 없게 되는 것이니 실제 우리 앱과의 동작과는 무관하게 된다. 우리 앱에서의 탈퇴 처리를 하려면 Apple Login 서비스를 활용해야 하는데, Account & Organizational Data Sharing는 그저 Apple 서비스를 더 이상 사용하지 않을래요~ 의 개념이기 때문이다.
그러면 Sign in with Apple REST API를 사용하여 앱에 등록된 사용자의 토큰을 해제해주어야 하니 Account & Organizational Data Sharing / Revoke tokens가 아니라 Sign in with Apple REST API / Revoke tokens를 사용해야 한다.
또한, Account & Organizational Data Sharing에서 받아온 토큰을 사용해도 Apple Login 서비스는 Apple 서비스의 일종이기 때문에 Sign in with Apple REST API / Revoke tokens이 무리없이 동작했다.
그러나, 무리없이 동작한다고 해도 우리가 원하는 것은 Apple의 로그인 서비스이기 때문에 이 서비스만을 사용하기 위한 토큰을 받는 것이 보안적으로 유리하다. 따라서, Generate and validate tokens를 포함한 다른 로그인 관련 URL들을 Sign in with Apple REST API에 나와있는 엔드포인트들로 수정했다.
이제 이해가 되었다!!