Как перейти с Yelp API с v2 на v3?

У меня есть сценарий, который отлично работал с 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?

4

Решение

Цитируй свой вопрос: Нужно ли заново создавать учетные данные API для версии 3?

Нет! Тебе не нужно ре-сгенерируйте свои учетные данные API, потому что они вам больше не нужны. Но вам нужно сгенерировать новый — ключ API.

Цитировать из Документация по Yelp API v3:

… начиная с 1 марта 2018 года API больше не использует OAuth 2.0 для
запросы и перешел к только API-ключи.

С помощью ключей API процесс аутентификации:

И это все! Вам больше не нужно делать запрос на токен
конечная точка для получения токена доступа. Ваш ключ API не истекает, как
токены доступа, так что вам не нужно беспокоиться о создании новых
из них.

Но учтите, что до вы начинаете с генерации ключа API (см. последнюю ссылку выше):

  1. Вы должны быть авторизованы на yelp.com. Если у кого-то нет учетной записи, он должен зарегистрироваться и подтвердить свой адрес электронной почты.
  2. JavaScript в вашем браузере должен быть включен. В другом случае вы будете перенаправлены на очень странную страницу исключений.

Цитата из описания вашей награды: Нужен рабочий пример Yelp API v3, возвращающий результат поиска по телефону.

Пример 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>";
?>

Я проверил это, и это работает.

4

Другие решения

Похоже, что вы используете 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

3

По вопросам рекламы [email protected]