토큰 발급 관련 문의

안녕하세요
PHP 사용해서 카카오 로그인 연동 테스트 중에 있습니다.

인가코드 발급 후 토큰발급을 요청하고 있는데
초기 호출시에는 정상적으로 토큰이 발급되는데 팝업창을 닫은 후
다시 인가코드를 발급 후 토큰을 발급하면 timeout이 발생하고 있습니다.
(curl 타임아웃 시간은 1분으로 설정되어있습니다.)

혹시 토큰 발급 후 재발급 하기 전 처리해야하는 과정이 있을까요?

앱 아이디: 889064

안녕하세요.

앱 889064 의 요청은 모두 20ms 내외로 응답하고 있습니다.
따라서, 타임아웃은 서비스측 환경에 의해 발생하는것으로 보입니다.
서비스측 구현 로직 및 환경을 확인 부탁드립니다.

JS SDK v1을 사용한 팝업 로그인 이력은 보이지 않는데요
팝업 로그인이라고 하시면 직접 구현하신것인가요?

REST API → /oauth/authorize
요청 경로를 팝업창에서 replace 해주는 방식으로 사용하고 있습니다.

$authorize_url = $Kakao_Sync_Class->get_authorize_url();
(카카오계정)

$authorize_url 경로로 replace

직접 구현 하셨군요
다른 이야기지만, 인스타 페이스북의 인앱 브라우저에서는 팝업 처리가 허용이 안될수도 있습니다.
때문에 팝업 형식 로그인은 개인적으로 권장 드리고 있지는 않습니다. 구현에 참고 부탁드립니다.


앞서 말씀드린대로 카카오측에서의 응답은 모두 20ms 내외로 처리되었습니다.
타임아웃 시, 오류 내용과 구현하신 코드를 확인 할수 있어야 할것 같습니다.

감사합니다.
로그인 방식은 JS SDK 사용하는 방식으로 변경했습니다.

토큰 발급 요청 코드는


$send_url = $this->auth_url."/oauth/token";
$send_data = array(
‘grant_type’ => ‘authorization_code’,
‘client_id’ => $this->api_key,
‘redirect_uri’ => $this->redirect_url,
‘code’ => $code,
‘client_secret’ => $this->secret_key
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);

curl_setopt($ch, CURLOPT_URL,$send_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($send_data));

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)”);

$data = curl_exec($ch); // 리턴 데이터
$http_error_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // http code
$error = curl_error($ch); // 에러 정보
curl_close($ch);

이렇게 요청하고 있습니다.
처음 발급할때는 정상적으로 통신이 되어 토큰이 발급되는데
다시 발급하기 위하여 새로운 인가코드를 받고 통신을 하려고 하면 타임아웃이 발생합니다.


추가로 혹시 같은 아이피에서 토큰발급을 많이 보낼경우 일정시간 차단같은걸 당하는 경우도 있을까요?

안녕하세요.

카카오에서 서비스측 요청을 차단하지 않습니다.

카카오측 로그를 확인해 보니 인가코드 발급 후, 접근토큰 요청이 없는 일부 로그가 확인되는데요
때문에, 서비스측에서 카카오측으로 요청 자체를 보내지 못하는것으로 보입니다.

CURLOPT_SSL_VERIFYPEER: false 옵션을 제거해서 테스트 부탁드리며, 서비스에서 https://kauth.kakao.com으로 정상 접근 되는지 확인해 보시는게 좋을것 같습니다.