无法使用tmhOAuth php库从Yelp API获取评论。我没有错误
我正在使用Matt Harris的tmhOAuth库生成对Yelp API的经过身份验证的请求。我已经在使用同一个库来访问twitterapi,它运行得很好 我已经注册了Yelp开发者API凭据,正在使用它们 我设置了tmhOAuth以发出如下请求: 我的直觉是,我的身份验证凭证没有正确输出,即使你认为我会从Yelp那里得到一些关于这方面的错误。例如,我将我的消费者密钥和密码以及我的用户令牌和密码更改为随机字符,但是当我使用这些伪造密钥发出请求时,我会得到与下面相同的响应,并且仍然没有身份验证错误消息。没什么 我确信,当其他人第一次设置对YelpAPI的调用时,他们可能会遇到类似的响应,并告诉我一些明显的错误。非常感谢您的帮助 我从Yelp那里得到的答复是:无法使用tmhOAuth php库从Yelp API获取评论。我没有错误,php,authentication,oauth,yelp,Php,Authentication,Oauth,Yelp,我正在使用Matt Harris的tmhOAuth库生成对Yelp API的经过身份验证的请求。我已经在使用同一个库来访问twitterapi,它运行得很好 我已经注册了Yelp开发者API凭据,正在使用它们 我设置了tmhOAuth以发出如下请求: 我的直觉是,我的身份验证凭证没有正确输出,即使你认为我会从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"
)
)
在这篇文章中,我显然混淆了上面的实际密钥、nonce和签名字符串。太好了。在使用StackOverflow多年后,我在这里发布了第一个真正的问题,我只是简单地阅读了别人问题的答案,我不得不谦虚地回答这个问题: 首先,上面列出的大部分响应数组是由oAuth库本身构建的。来自Yelp的实际“响应”存储在[response]数组项中,并且为空 我问自己,“一个网站什么时候没有响应?”如果我们所说的响应是指没有页面内容,那么只有当它在http头中向浏览器发送一些指令时才会这样做 当然,Yelp已经做出了回应。它想将我从https://url重定向到http://url,所以它用响应代码301响应,它告诉浏览器在不同的url重试,但我使用的是cUrl,cUrl没有自动重定向。它只是将初始服务器响应传递给oAuth库,oAuth库尽职尽责地报告301 我在前面尝试了一个http://url,但方法是将一个参数作为数组项“use_https”=>false传递给oAuth库。我错误地将'false'作为字符串,因此它的计算结果为TRUE,并继续使用https://并且301重定向仍然被发送下来 当我开始使用'use_https'=>false时,我得到了我心爱的Yelp评论,就像来自天堂的甘露一样充满了屏幕
但我希望,我荒谬的努力可能会帮助其他可怜的人。请复制/粘贴页面源的
var\u dump()/print\u r()
输出,而不是浏览器显示和呈现的内容。它将有完整的换行符和缩进,以使其可读。对不起。天啊,我知道我会发帖问,第一个反应就是拍手。当然,你是对的,它更清晰,毫无疑问。谢谢你的回复。