2012-08-16 13 views
5

पर काम नहीं कर रहा है मुझे हाल ही में माइक्रोसॉफ्ट से एक ईमेल मिला है कि बिंग एपीआई विंडोज़ एज़ूर मार्केटप्लेस में जा रहा था। ऐसा लगता है कि नए अनुरोध के बीच मुख्य अंतर प्रमाणीकरण था।बिंग एपीआई प्रमाणीकरण

$accountKey = '#########'; 
$api = 'https://api.datamarket.azure.com/Bing/Search/Web?$format=json&$top=8&Query='; 
$context = stream_context_create(array(
    'http' => array(
     'request_fulluri' => true, 
     'header' => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey) 
    ) 
)); 
$request = $api.'%27'.$q.'%27&$skip='.$start; 
$result = file_get_contents($request, 0, $context); 

हालांकि, मैं अब भी त्रुटि "प्राधिकरण प्रकार आपके द्वारा दी गई समर्थित नहीं है केवल बुनियादी और OAuth समर्थित हैं।" मिलती है:

मंचों पर कई पदों को पढ़ने के बाद, मैं इस पाया।

क्या कोई जानता है कि मैं इसे कैसे ठीक कर सकता हूं। मैंने curl भी कोशिश की है और यह काम नहीं करता है। किसी भी व्यक्ति को धन्यवाद जो मुझे समाधान ढूंढ सकता है।

+0

आप अपने $ q चर urlencode किया –

+0

माइक्रोसॉफ्ट अंतर्दृष्टि प्रदान करने में असमर्थ था – Matt

+0

@Sandrino Di मेटिया मैं urlencode की कोशिश की, लेकिन वह नहीं मदद की है। मुझे माइक्रोसॉफ्ट माइग्रेशन गाइड से उपरोक्त कोड मिला: www.bing.com/webmaster/content/developers/ADM_MIGRATION_GUIDE.docx मुझे स्टैक ओवरफ्लो पर एक और पोस्ट पर एक ही कोड मिला लेकिन दोनों एक ही त्रुटि दे रहे हैं –

उत्तर

3

मुझे लगता है कि यूआरएल बदल गए हैं। यह कोड काम करता है। पहली पंक्ति में यूआरएल नोट करें:

$api = 'https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/Web?$format=json&$top=8&Query='; 
$context = stream_context_create(array(
    'http' => array(
     'request_fulluri' => true, 
     'header' => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey) 
    ) 
)); 
$q = 'test'; 
$request = $api.'%27'.$q.'%27'; 

echo file_get_contents($request, 0, $context); 
+0

अफसोस की बात है, वह कोड या तो काम नहीं करता है - अभी भी वही त्रुटि दे रहा है। मैं सोच रहा हूं कि यह मेरे सर्वर के साथ कुछ करने के लिए हो सकता है लेकिन मुझे ऐसा नहीं लगता है। –

+0

दिलचस्प। शायद एक प्रॉक्सी है जो किसी तरह हस्तक्षेप कर रही है? लापता '$ accountKey = ... 'शीर्ष पर लाइन के अलावा, वह कोड वर्बैटिम है जो मैंने अभी सफलतापूर्वक चलाया है। – smarx

+0

क्या यह संभव है कि आपकी खाता कुंजी गलत है? इसे https://datamarket.azure.com/account/keys पर दो बार जांचें? – smarx

-1

मुझे वही समस्या थी जब मैंने किसी नए सर्वर पर वेबसाइट पर तैनात किया था। मुझे लगता है कि मेरी होस्टिंग कंपनी ने बाहरी लिंक पर file_get_contents के साथ कुछ कार्यक्षमता अक्षम कर दी है।

$url = 'https://api.datamarket.azure.com/Data.ashx/Bing/MicrosoftTranslator/v1/Translate?Text=%27'.urlencode($text).'%27&To=%27' . $to . '%27&From=%27' . $from . '%27&$top=100&$format=json'; 

    $accountKey = 'APIKEY'; 
    $handle = curl_init ($url); 
    if ($handle) { 
     $curlOptArr = array(
      CURLOPT_HTTPAUTH => CURLAUTH_BASIC, 
      CURLOPT_USERPWD => $accountKey . ':' . $accountKey, 
      CURLOPT_RETURNTRANSFER => TRUE 

     ); 
     curl_setopt_array($handle, $curlOptArr); 
     $response = curl_exec($handle); 
     $data = json_decode($response,true); 
     if (is_array($data)) { 
      if (isset($data['d']['results'][0]['Text'])) { 
       print $data['d']['results'][0]['Text']; 
      } else { 
       print false; 
      } 
     } else { 
      print $text; 
     } 
     $errRet = curl_error($handle); 
     curl_close($handle); 
    } 

यह कर्ल का उपयोग करते समय मेरे लिए काम करता है।

2

यहां खोज एपीआई का काम करने का उदाहरण है, बस "XXXX" के साथ अपनी एक्सेस कुंजी को प्रतिस्थापित करें। मैं भी काफी कुछ घंटे यह cURL का उपयोग कर काम पाने के लिए बर्बाद किया, लेकिन यह स्थानीय :(पर "CURLOPT_SSL_VERIFYPEER" के कारण असफल रहा था

$url = 'https://api.datamarket.azure.com/Bing/Search/Web?Query=%27xbox%27'; 
$process = curl_init($url); 
curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($process, CURLOPT_USERPWD, "username:XXXX"); 
curl_setopt($process, CURLOPT_TIMEOUT, 30); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false); 
$response = curl_exec($process); 

# Deliver 
return $response; 

# Have a great day! 
curl_close($process); 
+1

मैं आपके कर्ल कोड के लिए इस मुद्दे को ठीक करने में सक्षम हूं। धन्यवाद। – woodgate

+1

यह अभी भी काम करता है। इसकी पुष्टि कर सकते हैं। –

संबंधित मुद्दे