我遇到Sabre获取酒店图片API的问题
我在发出请求时收到以下响应。由于没有访问权限,授权失败。请参阅下面的完整回复。
array(5) { ["status"]=> string(12) "NotProcessed" ["type"]=> string(10) "Validation" ["errorCode"]=> string(26) "ERR.2SG.SEC.NOT_AUTHORIZED" ["timeStamp"]=> string(29) "2016-10-20T04:28:54.500-05:00" ["message"]=> string(48) "Authorization failed due to no access privileges" }
以下是我的代码问题是什么?
<?php
// get access token
$client_id= base64_encode("V1:user:group:AA");
$client_secret = base64_encode("my_password");
$token = base64_encode($client_id.":".$client_secret);
$data='grant_type=client_credentials';
$headers = array(
'Authorization: Basic '.$token,
'Accept: */*',
'Content-Type: application/x-www-form-urlencoded'
);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"https://api.sabre.com/v2/auth/token");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
$resf = json_decode($res,1);
$access_token = $resf['access_token']; // token provided from sabre
$token_type = $resf['token_type'];
$expires_in_seconds = $resf['expires_in'];
// // END get access token
// now to get api data using the provided access token
$url = 'https://api.sabre.com/v1.0.0/shop/hotels/image?mode=image';
$headers2 = array(
'Authorization: bearer '.$access_token,
'protocol: HTTP 1.1 ',
"Content-Type: application/json"
);
$postData ='{
"GetHotelImageRQ": {
"HotelRefs": {
"HotelRef": [
{
"HotelCode": "1276",
"CodeContext": "Sabre"
}
]
},
"ImageRef": {
"Type": "THUMBNAIL",
"CategoryCode": 3,
"LanguageCode": "EN"
}
}
}';
$ch2 = curl_init();
curl_setopt($ch2,CURLOPT_HTTPHEADER,$headers2);
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_POST, TRUE);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $postData);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
var_dump( $results = json_decode(curl_exec($ch2),true));
?>
答案 0 :(得分:0)
Seems like the service requires activation. From the API specs page:
"Note: This service is currently available in limited regions only (Americas and EMEA) and requires activation. Please contact your Sabre Account Representative for assistance."
https://developer.sabre.com/docs/read/rest_apis/hotel/search/get_hotel_image
You can request activation for testing via https://developer.sabre.com/contact or webservices.support@sabre.com