У меня есть сценарий, который отлично работал с v2
но сломался, когда он истек и перешел на v3
,
Я пытался это исправить, но ясно, что есть нечто большее, чем просто изменение v2
в v3
, По-видимому, они устарели секретный токен.
Вот что у меня на данный момент:
// Enter the path that the oauth library is in relation to the php file
require_once ('../lib/OAuth.php');
// For example, request business with id 'the-waterboy-sacramento'
$unsigned_url = "https://api.yelp.com/v3/businesses/search?term=niks-italian-kitchen-bar-austin";
// Set your keys here
$consumer_key = "xxxxxxx";
$consumer_secret = "xxxxxxxxx";
$token = "xxxxxxxx";
$token_secret = "xxxxxxxxxxx";
// Token object built using the OAuth library
$token = new OAuthToken($token, $token_secret);
// Consumer object built using the OAuth library
$consumer = new OAuthConsumer($consumer_key, $consumer_secret);
// Yelp uses HMAC SHA1 encoding
$signature_method = new OAuthSignatureMethod_HMAC_SHA1();
// Build OAuth Request using the OAuth PHP library. Uses the consumer and token object created above.
$oauthrequest = OAuthRequest::from_consumer_and_token($consumer, $token, 'GET', $unsigned_url);
// Sign the request
$oauthrequest->sign_request($signature_method, $consumer, $token);
// Get the signed URL
$signed_url = $oauthrequest->to_url();
echo $signed_url;
// Send Yelp API Call
$ch = curl_init($signed_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch); // Yelp response
curl_close($ch);
// Handle Yelp response data
$response = json_decode($data);
// Print it for debugging
echo '<pre>';
print_r($response);
echo '</pre>';
Сдвиг в правильном направлении будет высоко ценится.
Я получаю сообщение об ошибке:
stdClass Object ([error] => stdClass Object ([code] => TOKEN_MISSING [description] => Для использования этой конечной точки должен быть предоставлен токен доступа.))
Нужно ли заново создавать учетные данные API для v3
?
Цитируй свой вопрос: Нужно ли заново создавать учетные данные API для версии 3?
Нет! Тебе не нужно ре-сгенерируйте свои учетные данные API, потому что они вам больше не нужны. Но вам нужно сгенерировать новый — ключ API.
Цитировать из Документация по Yelp API v3:
… начиная с 1 марта 2018 года API больше не использует OAuth 2.0 для
запросы и перешел к только API-ключи.С помощью ключей API процесс аутентификации:
- Получите ваш ключ API от Управление страницей приложения.
- Поместите ключ API в заголовок запроса как
"Authorization: Bearer <YOUR API KEY>"
,И это все! Вам больше не нужно делать запрос на токен
конечная точка для получения токена доступа. Ваш ключ API не истекает, как
токены доступа, так что вам не нужно беспокоиться о создании новых
из них.
Но учтите, что до вы начинаете с генерации ключа API (см. последнюю ссылку выше):
Цитата из описания вашей награды: Нужен рабочий пример Yelp API v3, возвращающий результат поиска по телефону.
<?php
// request business by phone number
$request_url = "https://api.yelp.com/v3/businesses/search/phone?phone=+14157492060";
/*
Search for businesses by phone number. It must start with + and include the country code, like +14157492060.
See also https://www.yelp.com/developers/documentation/v3/business_search_phone
Additionly you will see the response body example.
*/
// Your API key:
$api_key = "Your-API-key-GUID"; //replase this string with your API key.
// Send Yelp API call
$ch = curl_init($request_url);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
"Content-Type: application/json",
"Authorization: Bearer ".$api_key
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch); // Yelp response
curl_close($ch);
// Handle Yelp response data
$response = json_decode($data);
// Test: get a business on last index number
echo $response->businesses[$response->total - 1]->location->city;
// Print it
$pretty_response = json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
echo "<pre>".$pretty_response."</pre>";
?>
Я проверил это, и это работает.
Похоже, что вы используете OAuth, согласно документации разработчика V3 для yelp, они перешли к аутентификации на основе ключей API.
До 7 декабря 2017 года API использовал OAuth 2.0 для аутентификации
запросы к API. В попытке упростить аутентификацию, начиная
1 марта 2018 года API больше не использует OAuth 2.0 для запросов и перемещен
только для ключей API.
Вы можете найти детали аутентификации на https://www.yelp.com/developers/documentation/v3/authentication#where-is-my-client-secret-going