Tech. Forum 개발자들을 위한 정보 공유의 장입니다
닫기

Tech.Forum

유효하지 않은 api key 라는 답이 나옵니다.

#1

https://developers.sktelecom.com/ 의 api 콘솔에서는 정상 작동을 합니다.

그러나 제가 작업을 해서 요청을 하면…

https://api2.sktelecom.com/weather/current/minutely?version=1&appkey=발급받은키&city=서울&county=강남구&village=개포동

HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 124
Date: Thu, 08 Mar 2018 04:29:23 GMT

{
“error”: {
“id”: “401”,
“category”: “gw”,
“code”: “8001”,
“message”: “유효하지 않은 API Key입니다.”
}
}

이렇게 답이 나옵니다.

실제 php 소스로는
$url_sk = “https://api2.sktelecom.com/weather/current/minutely”;
$url_full = $url_sk."?_method=GET&version=1&appKey=발급받은키&city=서울&county=강남구&village=개포동";
$ch= curl_init();
curl_setopt($ch, CURLOPT_URL, $url_full);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Accept: application/json’, ‘Content-Type: application/json; charset=UTF-8’));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$result = curl_exec($ch);
curl_close($ch);

입니다.
$result 를 보면 위의 응답이 나옵니다.


https://api2.sktelecom.com/weather/current/minutely?version=1&appkey=발급받은키&city=서울&county=강남구&village=개포동
이 주소를 웹브라우저로 직접 들어가보면 정상 데이터를 받아 볼수 있습니다.

또한 자바스크립트로 jquery ajax 로 데이터 수신이 되는것을 확인했습니다.

왜 php 의 curl 로만 안되는걸까요…

0 Likes

#2

비슷하게
https://www.data.go.kr (기상청에서 제공하는것을 약간 변경해서 제공해줌)
에서 동네예보 서비스를 사용해봤는데, 정상적으로 데이터를 받아 왔습니다.

sk 웨더 플래닛에서는 뒤에 붙는 파라미터를 인식을 못하는것 같아요…
post 로도 데이터를 받을순 없나요. 그게더 확실할것같은데…

curl 옵션만 미친듯이 변경해가면서 해봤는데, 결론은 이게 문제가 아니다 입니다.

api 는 제공하는데 개발할수 있게 샘플등 문서도 좀 잘 해줬으면 좋겠어요…

0 Likes

#3

소스를 보니 appKey 파라미터 값에 “발급받은키” 라고 되어 있네요.
appKey 파라미터는 workspace에 있는 Service Key 값을 넣어 주세요.
파라미터 값 중 한글 및 특수 문자가 있으면 URLencoding을 해주세요. (모든 파라미터 값에 URLencoding을 하시면 안전합니다. ^^)

appKey는 c85af1b8-168b-xxxx-xxxx-fc4f484cb08b 형식으로 되어 있습니다. (xxxx는 치환된 문자 입니다.)

0 Likes