2014-09-26 3 views
1

cURL을 사용하여 PHP에서 API 호출을하려고합니다. 권한 부여 헤더가 설정되어 있지 않은 것처럼인증 헤더가 PHP cURL로 설정되지 않았습니다.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://localhost/api/"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('sql' => $sql))); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: MY-API-KEY')); 
$response = curl_exec($ch); 
curl_close($ch); 

것 같다 :

내 코드입니다. 나는 헤더를 올바르게 인식하지 못한다고 말하면서 구글을 둘러 보았다. 누구든지 도와 줄 수 있습니까? 인증 코드없이 API 호출에 대한 코드가 작동합니다.

curl -H 'Authorization: MY-API-KEY'... 

모든 작품 :

UPDATE : 명령 줄 도구 컬를 통해 명령을 호출 .

PHP cURL의 의견은 "액세스 거부"입니다.

+0

내가 승 코드를 실행하는 기본 QWxhZGRpbjpvcGVuIHNlc2FtZQ의 ==를/PHP 5.4 - Authorization-Header/is/set (http://www.nirsoft.net/utils/smsniff.html에서 확인). 그래서 문제는 API 측에 있다고 추측 할 수 있습니다. 행운을 빕니다! –

+0

'$ 응답 '은 무엇입니까? 또한'curl_error()'를 확인하십시오. –

+0

cURL에서 오류 메시지가 표시되지 않지만 API에서 "액세스 거부"가 표시됩니다. – user809829

답변

1

그것 제대로 만들어 볼 does't 때문에 :

클라이언트 측 :

사용자 에이전트는 인증 헤더를 사용할 수있는 서버 인증 자격 증명을 보내려고

. (76)에 한정되지 않고 제외 얻어진 문자열 다음, Base64로의 RFC2045-MIME의 변형을 사용하여 인코딩 "암호 자명"

사용자 이름과 비밀번호가 문자열로 결합되어 다음과 같이

인증 헤더는 구성되고 char/line 인증 방법과 공백, 즉 "기본"이 인코딩 된 문자열 앞에 놓입니다. 사용자 에이전트는 다음 헤더가 형성되어있는 암호와 사용자 이름과 '열기 참깨'로 '알라딘'을 사용하는 경우 예를 들어, 다음과

인증 :

+0

명령 줄 도구에서 동일한 명령을 호출하면 모든 기능이 작동합니다. 이것은 내가 호출하려고하는 API입니다. http://docs.ckan.org/en/ckan-2.1.1/api.html#authentication-and-api-keys – user809829

관련 문제