카카오 로그인 시도 시 401 오류 발생

python 코드 입니다

def _get_user_data_with_kakao(self, access_token):
    KAKAO_BASE_URL = "https://kapi.kakao.com"
    profile_response = requests.get(   <--------- 여기에서 에러가 발생합니다.
        f"{KAKAO_BASE_URL}/v2/user/me",
        headers={"Authorization": f"Bearer ${access_token}"}
    )
    if profile_response.status_code == status.HTTP_401_UNAUTHORIZED:
        try:
            logger.error(f"Kakao access token is invalid: {access_token}")
            logger.error(f"Kakao response: {profile_response.text}")  <------ response.text에서 위에 작성한 error가 찍힙니다
        except Exception as e:
            logger.error(f"Kakao access token is invalid: {access_token}")

@wakuzi

기재하신 액세스 토큰으로 v2/user/me 호출 내역이 없습니다.

@gw9122

호출하신 액세스 토큰과 호출 시간 기재 부탁드려요.

Bearer null 로 들어온 건들이 더러 보이는데요. 액세스 토큰이 없어서 어떤 앱에서 호출했는지 확인이 불가합니다.

혹시 그러면 이 error response는 카카오측에서 주는게 아닌가요?

{
    "msg": "this access token does not exist",
    "code": -401
}

오후 5시 50분경

28czugvIn6lY3UjRDts7****AAAGT08_chVv0-avl6D9k

이걸로 다시 요청 했습니다

해당 글 올리신 분과는 다른 회사인데 관련있어서 올렸습니다. 대다수 요청이 다 401로 떨어집니다.
금일 15시 20~25분경부터 나오는 현상입니다.

17:50:34 - LbjVF_jfG9yW6OBZ1E****AGT08_W2OiSikwhugC4
17:50:32 - JAN43N-uD4Kky8Er****AGT08_Pg1v0-avl6D9k

headers={“Authorization”: f"Bearer {access_token}"}

이렇게 한번 날려보세요

해당시간에 생성된 Access token이 그런것 같습니다.

1개의 좋아요

감사합니다… 짱짱맨

1개의 좋아요

도움주셔서 감사합니다!!

질문 하나가 있는데요
위 코드를 보니 약 2년 반 전에 작성이 되었더라구요

어제까지 문제가 없던 걸 보아
추측하기로 Bearer 뒤에 access token을 contains 방식으로 검증 하던걸
equal로 검증 하도록 로직 수정이 된것 같은데

혹시 맞는지 여쭤봐도 괜찮을까요 ?

@gw9122 @wakuzi @hun6667

앞서 말씀하신 것과 같이 오류 발생하는 서비스들은 가이드와 달리
아래와 같은 형태로 헤더 설정하셔서 호출하고 있네요.

Bearer “N9n4SptVcgWTh**********************AAGT09oi5d0Jz_1t7hqp”

Bearer 헤더 에 쌍따옴표는 제거하고 호출해주세요.

15시 25분 전까지 동일하게 호출하고있었는데, 해당시간에 변경 작업이 있었을까요?

네, 내부 문의중인데 그런것으로 추정됩니다.
다만, 헤더는 가이드와 동일하게 불필요 문자 없이 호출 해주시는게 맞을 것 같아요.

1개의 좋아요

감사합니다 굿밤되십쇼~!

1개의 좋아요

지금 수정하신거 같은데

15:22:32 - IOkuYiYl1RhprfEO****AAGT00hLqf8D-j8FVvr5  

이것도 따옴표로 나갔을까요?

잘못 이해하고 계신거 같은데 쌍따움표랑 상관없이 $의 존재 유무에 따라 동작이 됩니다. 정확한시간은 잘 모르겠으나, 앞서 말씀 주신 분들께서 올려두신 access token에 대해서 $를 제거하면 잘 동작합니다. 보다 정확한 답변 부탁드립니다.

문의주신분들의 Request 헤더 Bearer에 쌍따옴표가 포함되어 들어왔고 제거하신 분들은 모두 정상 처리됩니다.
$ 여부는 카카오와 무관한 문의 주신 코드 상황으로 카카오가 판단할 수 없습니다.


참고로, 쌍따옴표가 들어왔을때 체크하는 로직은 롤백 되었다고합니다.
롤백과 무관하게 헤더는 가이드와 동일하게 불필요한 문자 없이 설정 부탁드립니다.

작업 전 시간대인

15:22:32 - IOkuYiYl1RhprfE****usAAAGT00hLqf8D-j8FVvr5
15:16:09 - Gund8_GOORp3****T00LpU0e54X7lJw5n

로그 확인 부탁드리고 혹시 앞으로 다시 작업계획이 있으시면 전달부탁드리겠습니다.

로그상 카카오측에서 특수문자 제거되어 정상 처리된 부분 확인됩니다.

앞서 롤백전 에러상황에서 Bearer와 토큰 사이에 $ 특수문자 포함되어 들어와 401 발생한 이력도 확인됩니다.
마찬가지로 가이드와 동일하게 불필요한 특수문자 없이 호출해주시면됩니다.

/v2/user/me	Bearer $JAN43N-****_Pg1v0-avl6D9k	401
/v2/user/me	Bearer JAN43N-****_Pg1v0-avl6D9k	200

헤더에 특수문자 제거 코드 복구여부는 내부 확인 후, 문의 주신 분들께 공유드리겠습니다.

다만, 위 조치와 무관하게 특수문자 제거하셔서 호출하도록 조치 부탁드립니다.

기존에 따옴표는 없고, "Bearer " + AccessToken + “=” 와 같이 뒤에 “=” 이거를 같이 넘기고 있었는데 (예전 가이드였을것으로 추정) 뒤에 “=” 는 필요 없는것으로 보면 될까요?

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#req-user-info-request-header
문서상 변수의 의미로 달러$가 있는거를 문자 달러로 붙여서 보내지 않도록 문서에 안내가 있으면 좋을듯 하네요…

Bearer 액세스토큰에 특수 문자를 붙이는 것은 보편적인 상황이라 보기 어렵습니다.
가이드와 예제는 아래 내용 참고 하셔서 Bearer AccessToken 형태로 호출 하시면됩니다.