2017-10-24 24 views
0

ajax get 요청에 oauth api 토큰 세부 정보를 사용하고 싶지만 권한이 부여되지 않은 401 오류가 발생합니다. 내가 php 파일 내 자격 증명을 확인했지만 그것을 사용하여 아약스 요청을 실행할 수 없습니다.ajax 요청 내에서 oauth 토큰을 사용하는 Bigcommerce API 호출

Bigcommerce oauth 로그인에 대한 ajax 요청 내에서 헤더를 전달하는 방법에 대해 고민하고 있습니다. API의 URL : https://api.bigcommerce.com/stores/ {매장 해시}/V3/카탈로그/카테고리

내 작업 PHP 코드 :

$headers = array(
"Accept: application/json", 
"X-Auth-Client:".$client_id, 
"X-Auth-Token:".$auth_token 
); 
$chbig = curl_init($api_url); 
curl_setopt($chbig, CURLOPT_TIMEOUT, 60); 
curl_setopt($chbig, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($chbig, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($chbig, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($chbig, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($chbig); //execute post 
$http_status = (string) curl_getinfo($chbig, CURLINFO_HTTP_CODE); 
curl_close($chbig); 
echo "<pre>"; 
print_r($http_status); 
print_r($result); 

작동하지 JS 코드 :

$.ajax({ 
    url: api_url, 
    headers: { 
    "X-Auth-Client" : client_id, 
    "X-Auth-Token" : auth_token , 
    'Accept':'application/json', 
    }, 
    dataType: 'jsonp', 
    type: "GET", 
    success: function() { alert('Success!'); } 
}); 

을 찾아 도와주세요 솔루션 ...

+0

ajax에 의해 생성 된 요청이 cURL에 의해 생성 된 요청과 동일하게 보이는지 (정확하게 동일한 헤더, 내용 등)? Fiddler와 같은 도구를 사용하여 비교할 수 있습니다. – ADyson

+0

아니요. 아약스 요청을 통과 한 요청 헤더가 없습니다. –

+0

"application/json 수락"및 "dataType : jsonp"는 서로 모순되고 충돌합니다. 제 생각에는 당신이 jsonp 비트를 제거해야한다고 생각합니다. cURL 요청에는 아무 것도 없지만 JSON을 기대하고 있다면 JSONP 콜백이 필요하지 않습니다. 같은 것이 아닙니다. – ADyson

답변

1

JSON이 아닌 JSONP를 요청해야합니다.

CORS 문제를 피하기 위해 끝점의 호스트 이름이 스크립트가 실행중인 페이지와 같아야합니다.

또한 프런트 엔드에 API 자격 증명을 표시하지 않는 것이 좋습니다.