एपीआई के 3 संस्करण हैं, आप निर्दिष्ट नहीं करते कि आप किस संस्करण को लक्षित कर रहे हैं, वी 1, वी 2, या येल्प फ़्यूज़न (वी 3?), लेकिन वी 2 के रूप में देखकर सेवानिवृत्त होने की प्रक्रिया में है (उदाहरण के लिए, वे नए प्रोग्रामर को V2 के लिए एक्सेस टोकन के लिए साइन अप करने की अनुमति नहीं देंगे), मुझे लगता है कि आपका मतलब फ़्यूज़न है।
डॉक्स के अनुसार, यह, https://api.yelp.com/oauth2/token के लिए एक अनुरोध बनाने के लिए अपने client_id और client_secret का उपयोग कर (है कि आप जब एक नई एप्लिकेशन को पंजीकृत मिलता है) से शुरू होता है, और एक हार्डकोडेड grant_type
= client_credentials
- और अपने कोड क्या करता है कि, जब कर्ल अनुरोध डीबगिंग, हमेशा CURLOPT_VERBOSE का उपयोग करें - - लेकिन यह नहीं ठीक से यूआरएल एनकोड client_id और client_secret, हो सकता है कि तुम क्यों रिक्त पृष्ठ मिल रहे हैं (और इसका मतलब है कि अपने आप में है कि आप CURLOPT_VERBOSE का उपयोग कर डिबगिंग नहीं कर रहे हैं करता है हम न अगर यह जुड़ा हुआ है और एक http 204 ठीक कोई सामग्री है, या एक 500 आंतरिक सर्वर त्रुटि मिल गया है, या यदि आपके कनेक्शन की एकमुश्त ब्लॉक किया गया था पता है, लेकिन CURLOPT_VERBOSE आपको बता होगा।), जब आप OAuth2/टोकन uRL से ACCESS_TOKEN मिलता है, यह आता है जेएसओएन प्रारूप में एन्कोड किया गया, इसे डीकोड करने के लिए json_decode का उपयोग करें।
जब आप उस टोकन मिला है, आगे API कॉल के लिए, autentication के http हेडर Authorization: Bearer TOKEN
निर्धारित किया है।
यहां मेरा कोड है, एपीआई के साथ खेल रहा है, लॉग इन कर रहा है (एक प्राधिकरण_टोकन प्राप्त कर रहा है), फिर dentistry-for-kids-and-adults-canyon-country
पर व्यवसाय जानकारी प्राप्त कर रहा है। दुर्भाग्य से, व्यवसाय खोज एपीआई टूटा हुआ लगता है, क्योंकि यह कोशिश करने के लिए केवल 500 आंतरिक सर्वर त्रुटियों को लौटाता है। भी मैं https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php से hhb_curl उपयोग कर रहा हूँ के रूप में कर्ल (चारों ओर एक सुविधा आवरण CURLOPT_VERBOSE का ख्याल रखता है और उस में डिबग जानकारी डाल करने के लिए एक फ़ाइल देने, तेजी से स्थानान्तरण के लिए CURLOPT_ENCODING की स्थापना, प्रत्येक curl_setopt की वापसी मान की जाँच, एक अपवाद है, तो किसी भी फेंक कर्ल विकल्पों को सेट नहीं किया जा सका और मुझे बता रहा है कि कौन सा विकल्प सेट करने में असफल रहा, आदि) - और यदि आप इस कोड का परीक्षण करना चाहते हैं, तो क्लाइंट_आईडी और क्लाइंट_सेक्रेट को प्रतिस्थापित करना सुनिश्चित करें, जैसा कि मैंने यहां पोस्ट किया है नकली है (लेकिन है जो अक्षम कर देता है SSL प्रमाणपत्र सत्यापन(), और enabl - एक ही लंबाई और सामान्य संरचना, इस कोड https://gist.github.com/divinity76/c43e8ceb803969def0c0369b8ec6de4b)
<?php
declare(strict_types = 1);
// hhb_.inc.php from https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php
require_once ('hhb_.inc.php');
$hc = new hhb_curl ('https://api.yelp.com/oauth2/token', true);
$hc->setopt_array (array (
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query (array (
'grant_type' => 'client_credentials', // << hardcoded
'client_id' => 'Q3sE0uuprHlZx3UbjPlnXX',
'client_secret' => 'Q3sE0uuprHlZx3UbjPlnXXQ3sE0uuprHlZx3UbjPlnXXQ3sE0uuprHlZx3UbjPln'
))
));
$hc->exec();
hhb_var_dump ($hc->getStdErr(), $hc->getStdOut());
$json = $hc->getResponseBody();
$parsed = json_decode ($json, true);
if (! isset ($parsed ['access_token'])) {
throw new \RuntimeException ('failed to get access token!');
}
$access_token = $parsed ['access_token'];
$hc->setopt_array (array (
CURLOPT_HTTPGET => true,
CURLOPT_URL => 'https://api.yelp.com/v3/businesses/' . urlencode ('dentistry-for-kids-and-adults-canyon-country'),
CURLOPT_HTTPHEADER => array (
'Authorization: Bearer ' . $access_token
)
));
$hc->exec();
hhb_var_dump ($hc->getStdErr(), $hc->getStdOut());
$json = $hc->getResponseBody();
$parsed = json_decode ($json, true);
hhb_var_dump ($parsed);
/*
* the business search api seems to be severly broken, giving me 500 Internal Server Errors all the time...
* $hc->setopt_array (array (
* CURLOPT_POST => true,
* CURLOPT_POSTFIELDS => http_build_query (array (
* //'location' => "375 Valencia St, San Francisco"
* //somewhere in San Francisco.
* 'latitude'=>'37.7670169511878',
* 'longitude'=>'-122.42184275'
*
*)),
* CURLOPT_URL => 'https://api.yelp.com/v3/businesses/search',
* CURLOPT_HTTPHEADER => array (
* 'Authorization: Bearer ' . $access_token
*)
*));
* $hc->exec();
* hhb_var_dump ($hc->getStdErr(), $hc->getStdOut());
* $json = $hc->getResponseBody();
* $parsed = json_decode ($json, true);
* hhb_var_dump ($parsed);
*/
भी द्वारा उत्पन्न पता है कि hhb_curl के लिए 2 पैरामीटर :: __ निर्माण $insecureAndComfortableByDefault
कहा जाता है हो सकता है एस संपीड़ित स्थानान्तरण (क्योंकि यह एक समस्या हो सकती है, Google "एसएसएल अपराध भेद्यता"), और डिफ़ॉल्ट रूप से अक्षम है ("डिफ़ॉल्ट रूप से सुरक्षित" होने के प्रयास में), लेकिन मैं आमतौर पर विकास की आसानी के लिए इसे
पर रखता हूं
'var_dump ($ परिणाम)' खाली है? – brianforan
@brianforan यह आउटपुट करता है: बूल (झूठा) – santa
मैं इसे पहले पोस्टमैन पर जांचता हूं और सुनिश्चित करता हूं कि अनुरोध स्वयं ही काम कर रहा है, फिर जब मुझे यकीन है कि मैं php पर स्विच करूंगा या जो भी भाषा मैं उपयोग कर रहा हूं कोशिश करके देखो। दुर्भाग्य से मैं अन्यथा बहुत मदद नहीं कर रहा हूँ। – brianforan