2012-11-03 8 views
2

我使用马特哈里斯的tmhOAuth库生成一个验证的请求,以Yelp的API。我已经在使用相同的库来访问Twitter API,并且它运行良好。无法使用tmhOAuth php库从Yelp 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" 
    ) 
    ) 

我显然混淆上面这个职位的实际密钥,随机数和签名字符串。

+0

请复制/粘贴_the page source_的var_dump()/ print_r()'输出,而不是浏览器显示和呈现的输出。它将保留换行符和缩进以使其可读。 –

+0

对不起。吉兹,我知道我会提出一个问题,第一个回应就是一巴掌。当然,你是对的,它更清晰,毫无疑问。感谢您的答复。 –

回答

1

太好了。我在使用StackOverflow几年后发布的第一个真正的真实问题,只需阅读其他人的问题的答案,然后我必须自己吃点谦虚的馅饼,自己回答问题:

首先,大部分响应数组我上面列出的是由oAuth库本身构建的。来自Yelp的实际“响应”存储在[response]数组项中,并且它是空的。

我问自己,“网站什么时候没有回应?”如果通过我们的回应,我们的意思是,没有页面内容,它只是当它发送一些指示给浏览器的HTTP头。

当然,Yelp HAD回应。它希望将我从https:// url重定向到http:// url,因此它使用响应代码301进行响应,该响应代码告诉浏览器要在其他网址重试,但我使用的是cUrl,并且使用了curl不自动重定向。它只是将初始服务器响应传递给oAuth库,该库精简地报告了301.

我之前尝试过http:// url,但是要做到这一点的方法是将一个参数传递给oAuth库,作为数组项'use_https'=> false。我错误地将'false'作为一个字符串,所以它评估为TRUE并继续使用https://并且301重定向仍然被发送。

第二个我开始使用'use_https'=> false,我得到了我喜欢的Yelp评论,填满屏幕就像天降甘露一样。

但是,也许我的荒谬的辛劳将帮助其他一些可怜的灵魂,我希望。