2

Matt Harris の tmhOAuth ライブラリを使用して、Yelp の API への認証済みリクエストを生成しています。私はすでに同じライブラリを使用して Twitter API にアクセスしていますが、うまく機能しています。

Yelp 開発者 API 資格情報にサインアップし、それらを使用しています。

次のようなリクエストを行うように tmhOAuth をセットアップしました。

http://api.yelp.com/v2/search?limit=20&location=アトランタ&term=食べ物

これについて 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" 
     ) 
   )

この投稿では、上記の実際のキー、ノンス、および署名文字列を明らかに難読化しています。

4

1 に答える 1

1

偉大な。他の人の質問への回答を読むだけで何年も StackOverflow を使用した後、私がここに投稿した最初の実際の正真正銘の質問です。謙虚なパイを食べて、自分で質問に答える必要があります。

まず、上記の応答配列のほとんどは、oAuth ライブラリ自体によって構築されます。Yelp からの実際の「応答」は [response] 配列項目に格納され、空でした。

「ウェブサイトが応答しないのはいつですか?」と自問自答しました。応答とは、ページ コンテンツがないことを意味します。それは、http ヘッダーでブラウザーに何らかの指示を送信した場合のみです。

もちろん、Yelp は反応しました。https:// url から http:// url にリダイレクトしたかったので、ブラウザーに別の url で再試行するように指示する応答コード 301 で応答しましたが、cUrl を使用していて、curl はリダイレクトしませんでした。自動的。301 を忠実に報告していた oAuth lib に最初のサーバー応答を渡すだけでした。

以前に http:// url を試してみましたが、それを行う方法は、配列項目 'use_https' => false としてパラメーターを oAuth lib に渡すことでした。誤って「false」を文字列として入力したため、TRUE と評価され、引き続き https:// を使用し、301 リダイレクトは引き続き送信されました。

'use_https' => false を使い始めた 2 番目に、天からのマナのように最愛の Yelp レビューが画面いっぱいに表示されました。

しかし、おそらく私のばかげた苦労が、他の貧しい魂を助けることになると思います.

于 2012-11-04T02:23:43.843 に答える