사이트 카카오 로그인 에러

controller 내 curl 방식으로 REST-API 호출시에만 이슈가 발생하는 점 확인하였습니다.

해당 부분 가비아에서 피드백 올때까지 아래 로그인 방식으로 치환하였습니다.
javascript에서 호출시에는 문제없음을 확인하였습니다.
Kakao.Auth.login({
success: function(authObj) {
Kakao.API.request({
url: ‘/v2/user/me’,
success: function(res) {

해당 부분 방화벽 문제인지 확인하여 수정 예정입니다.

1개의 좋아요

안녕하세요
저희 사이트도 동일한 증상이 금일 발생하여 추가정보 드립니다

원글 작성자분과 동일하게 PHP 기반 사이트이며, php curl()을 이용하여 kakao API를 호출중입니다

  1. 액세스 토큰 요청(/oauth/token) API는 정상적으로 동작합니다
  2. 발급받은 액세스 토큰을 이용하여 가입(/v1/user/signup), 유저정보(/v2/user/me) 호출시에 서버에 지정된 타임아웃 시간인 5분이 될때동안 응답이 오지않습니다
  3. 특이한 점은 서버의 커맨드라인 상에서 curl로 호출시에는 정상적으로 응답이 온다는겁니다…
    Ex) curl https://kapi.kakao.com/v2/user/me -H ‘Authorization: Bearer xxxxxxx’

카카오측 API 서버에 변경사항이 있는지 궁금하며,
저희측 환경 첨부합니다.

  • 서버 : AWS EC2
  • OS : Ubuntu 22.04 LTS
  • PHP : 7.1.33-52
  • curl : 7.81.0
  • php7.1-curl : 7.1.33-52

aws라면 방화벽 설정 확인 부탁드려요.

[공지] API플랫폼 서버 IP 변경 / [Notice] Changes the API platform server IP

참고로 위에 다른분 문의는 방화벽 문제 보다는 프록시 설정 또는 특정 기능 타임아웃 문제로 추정됩니다. 2분딜레이 후. 호출되고 0.3초만에 즉시 응답.

@jhjsongoku88

controller라 하심은 특정 프레임웍을 사용하시는 걸까요?

외부 변수 최소화를 위해
아래 php예제 참고하셔서 프레임웍 없이 호출테스트 부탁드립니다.

[rest api 예제] php - 카카오 로그인, 카카오 친구목록 조회 및 카카오톡 메시지

조금전 이슈 해결하여 공유드립니다

/user/me, /user/signup 두 API는 GET으로 호출하도록 변경된듯합니다
저희 사이트는 모든 카카오 API를 POST로 호출하고있던걸 확인하였고, GET으로 변경한 이후 정상적으로 응답을 받을수 있었습니다
curl_setopt($s, CURLOPT_POST, true); => curl_setopt($s, CURLOPT_POST, false);

아래 예제도 POST이고 방금 테스트해보니 GET/POST 모두 정상작동됩니다.
참고로 /v2/user/me는 GET POST 모두 지원합니다.

[rest api 예제] php - 카카오 로그인, 카카오 친구목록 조회 및 카카오톡 메시지

GET POST method 문제라면 오류가 발생해야지 타임아웃이 발생한다면 뭔가 개발하신 환경상 다른 문제가 있을 듯해요.

jhjsongoku88 님과 동일한 증상이 어제 오후 부터 클레임 접수되어 고충을 받고 있었습니다.

방화벽 업체를 통해 211.249.200.134 가 block 되고 있는지도 체크 했구요 .

방화벽 업체에서는 request 의 포트 를 통해 reply 포트가 동일해야 하는데 방화벽 정책에 위배되는 포트 변경이 이루어져 ip가 block 처리 된다고 합니다. ip 자체 block이 아닌 방화벽 정책에 위배 되어 block된다고 합니다.

해결 하신 것처럼 post → GET 으로 변경시 해결이 되었습니다.

하지만 근본적인 카카오 정책이 변경된 것인지 서버의 이상을 회피 해서 GET 으로 호출시 문제 해결이 된 것인지는 의문입니다.

일단은 GET으로 변경하여 문제는 해결하였습니다.

안녕하세요. 인프라팀에 내용 전달전 확인을 위해

호스팅환경 및 개발환경 설명 좀 부탁드립니다.

위에 질문 주신 jhjsongoku88 님은 /v2/user/me 호출 시, 서비스측 2분 딜레이 후 0.3초만에 즉시 응답하는 사례인데요.

응답이 전달되었는데… 어떻게 방화벽 block문제인지 이해가 가지 않아서요. 좀더 정보를 수집해봐야 할 것같습니다.

저도 해당부분 다른분들과 같습니다.

curl_setopt($s, CURLOPT_POST, true); => **curl_setopt($s, CURLOPT_POST, false);

으로 변경햇을시 문제 없이 동작합니다.

서버 최대 타임아웃시간이 다른분들과 다르게 지정된 타임아웃이 2분이라는것만 차이인것같습니다.

@jhjsongoku88 방화벽 설정이 없다고 하셨는데요. 방화벽 설정이 있는건가요?

@jhjsongoku88 @ciga4 @MeowKim

종합해보면 세분 모두 PHP를 사용하는 상황이고
방화벽을 (설정을) 사용하시는 분도있고 사용하지 않는 분도 있는걸 보면 방화벽 문제가 아닌것같습니다.

제가 제공드린 예시로 테스트는 해보셨을까요?
저는 PHP 개발환경에 종속적인 문제가 있을 것 같은데

아래 예제로 확인 한번 부탁드립니다. POST 예제입니다.

[rest api 예제] php - 카카오 로그인, 카카오 친구목록 조회 및 카카오톡 메시지

안녕하세요.

위 예제 확인하는중에 질문이 있어 문의드립니다.

예제 $res->properties == “” 부분으로 들어가 아래와 같이 발생하는데,
image

동의항목 : profile 필수 설정 이 어떤걸 뜻하는지 알 수 있을까요??

디벨로퍼스 설정에 사용자 정보 동의항목을 사용하도록 설정하시라는 이야기인데요. (이용자 정보를 받도록)

본 테스트를 위해서는 크게 상관없습니다. v2/user/me가 호출되고 결과 오는지만 테스트할거니까요.

상세한 설정에 대해서는 가비아에서 피드백은 없었으나

안녕하세요 가비아 퍼스트몰입니다.

telnet 통신시 문제없이 접속이 되는것으로 확인됩니다.

[root@healthyweb-01 conf]# telnet 211.249.200.134 443
Trying 211.249.200.134…
Connected to 211.249.200.134.
Escape character is ‘^]’.

[root@healthyweb-01 conf]# telnet 203.133.166.33 443
Trying 203.133.166.33…
Connected to 203.133.166.33.
Escape character is ‘^]’.

IP 텔넷 확인시엔 문제가 없는것으로 파악되었습니다.

네, 그런면에서

@ciga4 님이 말씀하신 아래 내용은 본 이슈와 무관해보입니다.

방화벽 업체에서는 request 의 포트 를 통해 reply 포트가 동일해야 하는데 방화벽 정책에 위배되는 포트 변경이 이루어져 ip가 block 처리 된다고 합니다. ip 자체 block이 아닌 방화벽 정책에 위배 되어 block된다고 합니다.

추가정보 공유드립니다

  1. 현상
    저희 사이트의 카카오 로그인 API 구현부는 대략 3년여간 변경된 부분이 없습니다.
    어제인 6/7 오후 카카오 로그인 장애에 대한 CS가 들어와 이슈에 대해 인지했으며,
    해당 기간 DB 커넥션이 평상시에 비해 2배정도 증가하는 현상도 있었습니다.
    사실 지금도 이게 무슨관계가 있는지 이해가 안되긴 하지만…
    카카오 로그인 이슈가 해결(GET으로 변경)됬던 19:20에 DB 커넥션 이슈도 해소되었습니다.
    이런 연관관계들로 미루어보아 DB 커넥션 이슈가 있었던 6/7 11:39 쯔음 카카오측의 API 서버에 대한 환경변경이 있었을거라 추측중입니다.

  2. Local vs Dev 비교 테스트
    댓글로 주신 예제는 디벨로퍼 설정도 따로해야하고, Local 개발환경에서는 카카오 로그인후 => 자사사이트 콜백이 안되는 점이 있어 약식 코드로 테스트를 진행해보았습니다

    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://kapi.kakao.com/v2/user/me');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    
    echo json_encode([
        'curl_getinfo()' => curl_getinfo($ch),
        'curl_error()' => curl_errno($ch) ? curl_error($ch) : null,
        'response' => $response,
    ]);
    
    curl_close($ch);
    
    • 테스트 케이스 : PHP curl을 이용하여 액세스토큰 없이 /user/me를 호출
    • 예상되는 응답
      • 정상 : {“msg”:“target ID is not supplied.”,“code”:-401}"}
      • 비정상 : 무한로딩 후 타임아웃
    • 환경
      • Local
        • Vagrant + Virtual Box 가상머신
        • Ubuntu 18.04 LTS
        • PHP 7.1.33-52
        • curl 7.58.0
      • Dev (개발서버)
        • AWS EC2
        • Ubuntu 22.04 LTS
        • PHP 7.1.33-52
        • curl 7.81.0
    • 결과
      • Local : 정상응답
      • Dev : 비정상응답 (무한로딩)
    • 가능한 원인
      • 방화벽 등 AWS 환경 이슈? => 터미널 접속후 커맨드라인에서 호출시에는 정상동작하므로 관련 X
      • curl 버전에 따른 이슈? => 이쪽이 원인일 가능성이 높으나 카카오 서버에서 어떤점이 변경됬는지 알수없기때문에 외부 개발자가 정확한 원인은 파악하기 힘들것으로 보임
  3. 솔루션 #1
    /user/me, /user/signup 호출시 메서드를 GET으로 변경
    이 경우 정상동작하긴 하지만, API 명세에 명시된 메서드를 위배하게됨

    curl_setopt($s, CURLOPT_POST, false);
    
  4. 솔루션 #2 (Recommended)
    /user/me, /user/signup 호출시 메서드를 POST로 유지하되, 빈 파라미터 전달
    /user/me의 경우 전달하는 파라미터가 없는데 왜 POST로 선언되어있는지 이해가 안되긴 하지만,
    어찌됬든 명세를 지킬수있는 방법

    curl_setopt($ch, CURLOPT_POSTFIELDS, array());
    
1개의 좋아요

자세한 피드백 감사합니다.

6/8 11:39 쯔음 카카오측의 API 서버에 대한 환경변경이 있었을거라 추측중 입니다.

오늘 오전 11시 39분 말씀 맞으실까요?

최종 확인해주시면 kapi 개발자에게 확인 해보도록 하겠습니다

저희 사이트 기준으로 2023-06-07 12:34:50 에 카카오 간편 로그인으로 마지막 회원가입자가 있었습니다.

해당 시점일듯합니다.

@MeowKim 오늘이 아닌 이야기하시는게 아니고 어제자 이야기하시는것같습니다.

@alswndn2030 @lifezip @MeowKim @ciga4

문제 발생 시작 시점 남겨주시면 담당자에게 종합해서 문의하도록 하겠습니다.

@jhjsongoku88

넵. 확인 감사합니다.

@tim.l
6/7입니다
날짜 수정했습니다