개발일지
[React-Native] Apple Login & 회원탈퇴 본문
바쁜 분들을 위한 3줄 요약
1. 애플로그인 후 AuthorizationCode를 검증해서 Refresh_Token 발급받고 저장하기
2. 회원탈퇴에서 Refresh_Token을 사용해 회원탈퇴하기
3. 앱 외부에서 진행되는 회원탈퇴도 반영할 수 있도록 구현하기
현재 진행 중인 SoundHood 앱은 제가 모든 것을 담당하고 있습니다. 앱, 서버 기타 등등이요.
RN(프론트)에서 진행하는 애플로그인은 이 라이브러리를 사용하면 비교적 쉽게 진행이 가능합니다. 기본적인 설정과 진행 방식은 위의 링크를 통해 진행하면 됩니다.
Apple 로그인을 통해 회원가입 및 로그인을 진행하는 기능을 프론트와 서버단에 추가하고 이제는 회원탈퇴 기능을 구현하려고 했습니다.
다만, 앞서 소개드린 라이브러리에서는 회원탈퇴 기능까지는 구현이 되지 않았고, 현재 라이브러리를 통해 로그인 완료 후 주어지는 데이터들을 활용하여 회원탈퇴 기능을 자체적으로 만들어야 했습니다.
그러기 위해서는 어떤 과정이 필요한지를 공유해 보겠습니다.
1. 로그인 후 획득할 수 있는 데이터
애플 로그인 후 획득할 수 있는 데이터는 사용자 이메일, 이름, identityToken, authorizationCode 등이 있습니다. 해당 데이터들을 통하여 회원탈퇴에서 사용할 데이터들을 만들어봅시다.
2. Apple Revoke Tokens(회원탈퇴)에서 사용하는 데이터 확인하기
Apple Revoke Token에 관련된 공식문서에는 이러한 요소들을 필요로 합니다.
여기서 가장 중요한 부분은 token입니다. 애플에서는 회원 탈퇴를 하기 위해서 access_token 혹은 refresh_token을 요구하는데, 문제는 access_token의 유효기간이 매우 짧다는 점입니다.
하지만 refresh_token의 경우 사용자가 연결을 해제하지 않는 한 계속 유효하기 때문에, 회원 탈퇴에서는 refresh_token을 사용하는 것이 개발자의 심신안정에 도움이 될 것입니다.
3. Refresh Token 가져오기
애플에서는 로그인을 완료했을 경우, Refresh Token을 따로 내려주지 않습니다. 따라서, 개별적으로 로그인 후 획득한 AutorizationCode를 활용하여 Apple 측에 요청을 해야 합니다.
즉, 저처럼 서버가 있는 경우에는 서버에서, 서버가 없는 경우 프론트단에서 다시 한번 API를 활용해야 하는 것이죠.
해당 내용은 공식문서를 참고하여 access_token과 refresh_token을 받아오면 됩니다.
어찌어찌 획득한 Refresh Token을 저장하고, 회원탈퇴 시 이 토큰을 사용해서 회원탈퇴를 진행하면 됩니다.
(저는 서버에서 이 라이브러리를 사용하여 편하게 작업했습니다)
4. 회원탈퇴 진행
2번에 표기한 공식문서를 참고하여 회원탈퇴 기능을 구현해 주시면 됩니다. token_hint의 경우 내가 사용한 토큰의 유형을 입력하면 되는데, 이 순서를 따라한 경우 refresh_token을 입력해 주시면 됩니다.
5. 번외
이건 조금 다른 이야기지만, Apple 로그인을 진행한 앱 사용자가 꼭 앱 내에서 회원탈퇴를 진행할 수 있는 것은 아닙니다.
iOS의 경우 설정 -> 애플 계정 -> Apple로 로그인에 진입한 경우, 애플로 로그인한 계정을 삭제시킬 수 있기 때문이죠. 즉, 앱의 외부에서 진행된 회원탈퇴의 경우에도 이를 반영해주어야 합니다.
위에서 소개드린 이 라이브러리에서는 onCredentialRevoked라는 Event Listener를 사용해 이를 반영하여 회원탈퇴 로직을 사용할 수 있게 해 줍니다. 자세한 내용은 해당 내용을 참고해 보세요.
마치며
항상 애플 관련된 로직들은 생각 외로 불친절한 부분이 많은 것 같지만, 이번 경험을 통해 다음에는 조금이나마 편하게 같은 기능을 활용할 수 있을 것 같습니다. 서버까지 함께 진행하니 생각해야 할 부분들이 많네요.. 허허..
3줄 요약
1. 애플로그인 후 AuthorizationCode를 검증해서 Refresh_Token 발급받고 저장하기
2. 회원탈퇴에서 Refresh_Token을 사용해 회원탈퇴하기
3. 앱 외부에서 진행되는 회원탈퇴도 반영할 수 있도록 구현하기
'개발일지 > React-Native' 카테고리의 다른 글
[React-Native] Alert API 공통으로 사용할 수 있도록 만들기 (0) | 2024.12.01 |
---|---|
[React-Native] Spotify Search API Android에서 노래 제목이 영어로 나오는 문제 (0) | 2024.11.28 |
[React-Native] 지도에서 마지막 위치를 시작 위치로 사용하기 (2) | 2024.11.15 |
[React-Native] Fabric 모드 전환 시 Metro에 연결이 안되는 문제 (0) | 2024.10.30 |
[React-Native] React-Navigation과 React-native-safe-area-context의 중복 여백 문제 (1) | 2024.10.17 |