[php] curl을 통해 kakao RESTAPI 로 사용자 정보 일부 얻어오기

안녕하세요. 개발자 드리머즈입니다.


php에서 curl을 사용하여

kakao REST API 테스트를 하고 있었는데

이상한 점을 발견하여 글 남깁니다.


카카오 디벨로퍼 사이트에 아래와 같은 방식으로

POST data를 넘기면 사용자의 특정 property만 가져올 수 있다고 되어있습니다.

curl -v -X POST https://kapi.kakao.com/v1/user/me \
  -H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -d 'propertyKeys=["name","age"]' 


그래서 php에서

$post_data["propertyKeys"] = "[\"name\", \"age\"]";

과 같이 post_data를 만들어서 전송했더니.. 무시됐습니다.


왜인지는 모르겠으나

curl_setopt ($ch, CURLOPT_POSTFIELDS, "propertyKeys=[\"nickname\",\"profile_image\"]");

이런 식으로 해야 동작합니다.


제가 curl 익숙하지 않아..

나중에

그 원인을 찾으면 정리하겠습니다.


 <?php
$url = 'https://kapi.kakao.com/v1/user/me'; //접속할 url 입력

//$post_data["propertyKeys"] = "[\"name\", \"age\"]";


$header_data = [];
$header_data[] = 'Authorization: Bearer myAccessToken';


$ch = curl_init(); //curl 사용 전 초기화 필수(curl handle)

curl_setopt($ch, CURLOPT_URL, $url); //URL 지정하기
curl_setopt($ch, CURLOPT_POST, 1); //0이 default 값이며 POST 통신을 위해 1로 설정해야 함
curl_setopt ($ch, CURLOPT_POSTFIELDS, "propertyKeys=[\"nickname\",\"profile_image\"]"); //POST로 보낼 데이터 지정하기
curl_setopt ($ch, CURLOPT_POSTFIELDSIZE, 0); //이 값을 0으로 해야 알아서 &post_data 크기를 측정하는듯
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_data); //header 지정하기
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); ////이 옵션이 0으로 지정되면 curl_exec의 결과값을 브라우저에 바로 보여줌. 이 값을 1로 하면 결과값을 return하게 되어 변수에 저장 가능(테스트 시 기본값은 1인듯?)
$res = curl_exec ($ch);

echo $res;
//var_dump($res);//결과값 확인하기
echo '<br>';
//print_r(curl_getinfo($ch));//마지막 http 전송 정보 출력
//echo curl_errno($ch);//마지막 에러 번호 출력
//echo curl_error($ch);//현재 세션의 마지막 에러 출력
curl_close($ch);
?>


작성자

Posted by 드리머즈

관련 글

댓글 영역