안녕하세요. 개발자 드리머즈입니다.
php에서 curl을 사용하여
kakao REST API 테스트를 하고 있었는데
이상한 점을 발견하여 글 남깁니다.
카카오 디벨로퍼 사이트에 아래와 같은 방식으로
POST data를 넘기면 사용자의 특정 property만 가져올 수 있다고 되어있습니다.
curl -v -X POST https: -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); ?> |
댓글 영역