我对新的twitter api有一个奇怪的问题。我按照question的非常好的答案在twitter上创建了一个搜索,并使用了来自here的TwitterAPIExchange.php。
只要我从使用CURL的服务器直接调用它,一切正常。但在实时环境中,我必须使用具有基本身份验证的代理。
我所做的就是将代理身份验证添加到performRequest函数中:
if(defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT') && defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD'))
{
$options[CURLOPT_HTTPPROXYTUNNEL] = 1;
$options[CURLOPT_PROXYAUTH] = CURLAUTH_BASIC;
$options[CURLOPT_PROXY] = WP_PROXY_HOST . ':' . WP_PROXY_PORT;
$options[CURLOPT_PROXYPORT] = WP_PROXY_PORT;
$options[CURLOPT_PROXYUSERPWD] = WP_PROXY_USERNAME . ':' . WP_PROXY_PASSWORD;
}
没有代理,我得到一个JSON响应。但是我得到了代理:
建立HTTP / 1.1 200连接 HTTP / 1.1 400错误请求 content-type:application / json;字符集= utf-8的 日期:2013年12月20日星期五09:22:59 UTC 服务器:tfe strict-transport-security:max-age = 631138519 内容长度:61 代理连接:保持活跃 连接:保持活力 Set-Cookie:guest_id = v1%3A138753137985809686;域= .twitter.com;路径= /; Expires = Sun,20-Dec-2015 09:22:59 UTC 年龄:0 {“errors”:[{“message”:“Bad Authentication data”,“code”:215}]}
我尝试使用Charles Proxy在我的本地环境中模拟代理,但它确实有效。
我假设代理要么没有发送身份验证标头,要么以某种方式更改数据。
任何有线索的人......
编辑: 使用HTTP API可以正常工作但HTTPS失败。我已经尝试过将CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST设置为FALSE,但是推特SSL是有效的,所以不推荐这样做
答案 0 :(得分:0)
您的代理响应是否缓存,或代理响应中的日期是否旧,因为您在12月20日执行了API调用?
如果它被缓存,你的代理可能会收到来自实际无效请求的缓存回复吗?