I have been porting an application at work from the old Bing API to the new one. Having seen several posts about how the new one works in PHP I'm getting Authentication issues with it.
This is the error that is returned by the URL:
Warning: file_get_contents(https://api.datamarket.azure.com/Bing/Search/Image?$format=json&Query=%27%27) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 401 The authorization type you provided is not supported. Only Basic and OAuth are supported in /home/krem81/public_html/classes/class.BingSearch.php on line 178
And in turn, this is the function that I am using to interact with the API:
$accountKey = $this->Appid;
$ServiceRootURL = "https://api.datamarket.azure.com/Bing/Search/";
$WebSearchURL = $ServiceRootURL . 'Image?$format=json&Query=';
$context = stream_context_create(array(
'http' => array(
'request_fulluri' => true,
'header' => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)
)
));
$request = $WebSearchURL . urlencode( '\'' . $_POST["searchText"] . '\'');
echo($request);
$this->response = file_get_contents($request, 0, $context);
$this->results = json_decode($this->response);
Since trying this I have also now tried
$accountKey = $this->Appid;
$ServiceRootURL = "https://api.datamarket.azure.com/Bing/Search/";
$WebSearchURL = $ServiceRootURL . 'Image?$format=json&Query=';
$request = $WebSearchURL . urlencode( '\'' . $this->keyword . '\'');
echo($request);
$process = curl_init($request);
curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($process, CURLOPT_USERPWD, $accountKey . ":" . $accountKey);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$this->response = curl_exec($process);
var_dump($this->response);
$this->results = json_decode($this->response);
var_dump($this->results);
Does anyone have any ideas as to what could be triggering the authentication to fail?