Notice
Recent Posts
Recent Comments
Link
관리 메뉴

look-forest

앱 소셜 로그인 본문

회고록/배운 것

앱 소셜 로그인

studyHub 2025. 8. 1. 00:20

 

 

 

 

소셜 로그인 후 탈퇴 시 unlink/revoke API를 백엔드에서 호출하여 연결 해제를 처리하는 게 권장/필수라고 한다.

소셜 서비스와의 연결(Authorization Grant)을 명시적으로 해제하지 않으면, 탈퇴 후에도 "연결된 앱" 상태가 유지됨.

 

 

 

 

 

 

# 애플

1. 최초 로그인 시 얻은 authorization_code로 refresh token을 얻고 저장
2. db 저장된 refresh token로 연결 해제 시도  -> 성공 시  앱에 성공 응답
3. refresh token이 유효하지 않을 시 -> 앱에 실패 응답

애플에서 refresh_token이 만료/무효(예: 비밀번호 변경 등)된 경우,
authorization_code로 다시 /token 요청해도 refresh_token이 다시 발급되진 않는다
만약 무효/만료된 경우 Apple API에서 unlink 불가 → “이미 해제됨”으로 처리하거나,
사용자에게 안내(Apple 정책상 재발급 불가)해야 한다.

 

※ refresh_token 발급 방식
1. 앱에서 애플 로그인 → authorization_code 획득
2. 이 authorization_code를 사용해,https://appleid.apple.com/auth/token에 POST 요청
     이 요청에 client_id, client_secret, code, redirect_uri 등 파라미터 필요
3. 이 요청의 응답에서 refresh_token(및 id_token, access_token 등)이 함께 반환됨
즉, refresh_token을 받으려면 반드시 server(client_secret 발급 가능)에서 토큰 교환을 해야 함.

참고로 애플의 refresh_token은 "authorization_code"로 최초 1회만 발급받을 수 있다. (id_token은 재발급 가능)

 

# 카카오

1. 앱 어드민 키(REST API admin key) 준비
    카카오 개발자센터 > 내 애플리케이션 > 앱키에서 어드민 키 확인

2. 카카오 사용자 식별 정보 확보
    회원가입 시 저장한 카카오 userId 필요

3. POST https://kapi.kakao.com/v1/user/unlink

    - 헤더에 앱 어드민 키

    - 파라미터에 userId

 

※ userId 획득 방식

1. 앱에서 access_token 받아서 백엔드에 전달

2. POST https://kapi.kakao.com/v2/user/me 호출 -> userId 저장

 

 

client_secret이 뭐고 왜 필요한가?

토큰 발급/폐기(revoke) API 호출 시 검증용으로 사용하여
우리가 "애플 개발자 포털에 등록된 진짜 서비스 서버"임을 증명하는 역할을 한다.

 

애플이 요구하는 형식대로 우리 서버에서 직접 생성해야 하며,
_일반 문자열이 아니라, 특정 필드를 넣어서 private key로 서명한 JWT(ES256)_이다.
애플 개발자 계정에서 발급받은 키로 서명한 JWT를 매번 만들어서 애플 API에 제출해야 한다.

 

client_secret(JWT) 생성 방법

  • team_id: Apple 개발자 계정의 팀 ID
  • client_id: 서비스 ID (ex: com.http://m.example.app)
  • key_id: Apple에서 발급한 키의 ID
  • private key: Apple에서 다운로드한 AuthKey_XXX.p8 파일 내용

client_secret 생성에 사용되므로 client_id를 제외하고는 앱 코드에 노출되면 안된다.