Sabre获取酒店图片API

时间:2016-10-20 09:49:07

标签: php sabre

我遇到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));

?>

1 个答案:

答案 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