Невозможно получить отзывы от Yelp API с помощью библиотеки php tmhOAuth. Я НЕ ПОЛУЧАЮ ОШИБОК

Я использую библиотеку tmhOAuth Мэтта Харриса для создания аутентифицированного запроса к Yelp API. Я уже использую ту же библиотеку для доступа к Twitter API, и она хорошо работает.

Я подписался на учетные данные Yelp Developer API и использую их.

Я настроил tmhOAuth, чтобы сделать такой запрос:

http://api.yelp.com/v2/search?limit=20&location=Atlanta&term=food

Я подозреваю, что мои учетные данные для аутентификации не выводятся правильно, даже если вы думаете, что я получу какую-то ошибку от Yelp по этому поводу. Например, я меняю свой ключ и секрет потребителя, а также токен и секрет пользователя на случайные символы, но когда я делаю запрос с этими фиктивными ключами, я получаю тот же ответ, что и ниже, и ВСЕ ЕЩЕ нет сообщения об ошибке аутентификации. Ничего!

Я уверен, что кто-то другой, когда он впервые настраивал свои вызовы к Yelp API, мог столкнуться с аналогичным ответом и сказать мне что-то очевидное, что я делаю неправильно. Любая помощь приветствуется.

Ответ, который я получаю от Yelp:

Array ( 
   [headers] => Array ( 
     [date] => Sat, 03 Nov 2012 21:36:15 GMT 
     [server] => Apache
     [x_node] => wsgi, web31,  api_com 
     [content_length] => 0 
     [cache_control] => max-age=0, must-revalidate, no-cache, no-store, private 
     [expires] =>  Sat, 03 Nov 2012 21:36:15 GMT
     [pragma] => no-cache [set_cookie] => bse=0aff211810c8d90f05c4e8438a3e0b7b; Domain=.yelp.com; Path=/; HttpOnly 
     [location] => http://api.yelp.com/v2/search?limit=20&location=Atlanta&term=food  
     [vary] => User-Agent 
     [connection] => close 
     [content_type] => text/html; charset=UTF-8 
     [x_mode] => rw 
     [x_proxied] =>  lb2 
   ) 
   [code] => 301 
   [response] => 
   [info] => Array ( 
     [url] => https://api.yelp.com/v2/search?limit=20&location=Atlanta&term=food 
     [content_type] => text/html; charset=UTF-8 
     [http_code] => 301 
     [header_size] => 534 
     [request_size] => 439 
     [filetime] => -1 
     [ssl_verify_result] => 0 
     [redirect_count] => 0 
     [total_time] => 0.653941 
     [namelookup_time] => 0.000981 
     [connect_time] => 0.073796 
     [pretransfer_time] => 0.297663 
     [size_upload] => 0 
     [size_download] => 0 
     [speed_download] => 0 
     [speed_upload] => 0  
     [download_content_length] => 0 
     [upload_content_length] => 0 
     [starttransfer_time] => 0.653791 
     [redirect_time] => 0 
     [certinfo] => Array ( ) 
     [request_header] => GET 

       /v2/search?limit=20&location=Atlanta&term=food 
       HTTP/1.1 User-Agent: themattharris' HTTP 
       Client Host: api.yelp.com Accept: */* Authorization: OAuth 
       oauth_consumer_key="****************", 
       oauth_nonce="*******************", 
       oauth_signature="***************************", 
       oauth_signature_method="HMAC-SHA1", 
       oauth_timestamp="1351978544", 
       oauth_token="******************", 
       oauth_version="1.0" 
     ) 
   )

Я, очевидно, запутал фактические строки ключа, одноразового номера и подписи выше для этого сообщения.


person Zac Imboden    schedule 03.11.2012    source источник
comment
Скопируйте / вставьте var_dump()/print_r() вывод из источника страницы, а не тот, который отображается и отображается браузером. Для удобства чтения в нем будут разрывы строк и отступы.   -  person Michael Berkowski    schedule 04.11.2012
comment
Извините. Боже, я знал, что отправлю вопрос, и первым же ответом будет пощечина. Конечно, вы правы, разборчивее, без вопросов. Спасибо за ваш ответ.   -  person Zac Imboden    schedule 04.11.2012


Ответы (1)


Большой. Первый настоящий добросовестный вопрос, который я публикую здесь после многих лет использования StackOverflow, просто читая ответы на вопросы других людей, и я должен съесть скромный пирог и сам ответить на вопрос:

Во-первых, большая часть указанного выше массива ответов создается самой библиотекой oAuth. Фактический «ответ» от Yelp хранился в элементе массива [response] и был пустым.

Я спросил себя: «Когда веб-сайт не отвечает?» если под ответом мы подразумеваем отсутствие содержимого страницы, это только тогда, когда он отправляет некоторые инструкции браузеру в заголовке http.

Конечно, Yelp ответил. Он хотел перенаправить меня с URL-адреса https: // на URL-адрес http: //, поэтому он ответил кодом ответа 301, который сообщает браузеру повторить попытку по другому URL-адресу, но я был использование cUrl и curl не выполняло перенаправление автоматически. Он просто передал первоначальный ответ сервера библиотеке oAuth, которая послушно сообщала об ошибке 301.

Раньше я пробовал использовать http: // url, но для этого нужно было передать параметр в oAuth lib как элемент массива use_https '=> false. Я ошибочно поместил «false» в качестве строки, поэтому он оценил значение TRUE и продолжил использовать https: //, а перенаправление 301 все еще было отправлено.

Когда я начал использовать 'use_https' => false, мои любимые обзоры Yelp заполнили экран, как манна небесная.

Но, возможно, мои нелепые муки помогут какой-нибудь другой бедняге, надеюсь.

person Zac Imboden    schedule 04.11.2012