Twitter API 1.1 - 一切都很好但有时它返回null

时间:2013-12-12 11:45:17

标签: php twitter

<?php
include ("TwitterAPIExchange.php");
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$settings = array(
'oauth_access_token' => "2239564530-xxxxxxxxx",
'oauth_access_token_secret' => "Fu8ASZzoxxxxxxxxxxxx",
'consumer_key' => "Idrxxxxxxxxx",
'consumer_secret' => "sKwriKxxxxxxxxxxxxxxx"
);
$getfield = '?screen_name=xxxxxxxxx&count=20';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)->buildOauth($url, $requestMethod)->performRequest();
$recentTwittes = array();
$recentTwittes = json_decode($response,true);
?>
<div class="box-twitter">
<ul id="mycarousel" class="jcarousel jcarousel-skin-tango">
<?php foreach($recentTwittes as $singleTwitte){?>
<li>
<div class="twitter-marker" style="padding-bottom:30px">
<p>
<a target="_blank" href="https://twitter.com/#!/<?=$singleTwitte['user']['screen_name']?>">
<?php echo '<img src="'.$singleTwitte['user']['profile_image_url'].'" /> - '.$singleTwitte['user']['name'].' - '.$singleTwitte['text']; ?>  
</a>
</p>
</div>
</li>
<?php }?>
</ul>
</div>
</div>

代码运行正常,但有时在twitter响应中为NULL,导致为foreach循环生成错误,因为为foreach()提供了无效参数。我无法弄清楚出了什么问题。我重新生成了Oauth键和消费者密钥。如果这会立即返回我的twittes那么为什么它在某个时候返回null。

2 个答案:

答案 0 :(得分:0)

通常,NULL问题是由于您的证书问题。在我从cURL选项中“禁用SSL对等验证”以防止“中间人”攻击后,这些问题开始出现(主要针对Windows / Mac用户)。这会导致具有无效证书配置的人员出现问题。您可以查看此here的问题和解决方案。

真的,我需要在cURL出错时解决抛出异常。

正确修复

整理您的证书问题。 Method Here

  

我在Windows上(使用XAMPP),发现跟随these instructions修复了我的问题。下载CA root certs from here,将其粘贴到PHP文件夹中,然后将以下行添加到php.ini文件中:curl.cainfo = c:\ php \ cacert.pem。在上面的代码段中更改.pem文件的路径。

快速修复

您可以尝试在CURLOPT_SSL_VERIFYPEER => false中的performRequest()方法中重新添加TwitterAPIExchange.php,看看这对您有何影响。这样做是为了你自己的危险。

答案 1 :(得分:0)

因此,似乎问题的一部分是关于编码要搜索的字符串。我帮助了一点,开始减少NULL。在将查询插入 $ url 之前,我使用了 rawurlencode($ query)

另一个相关的问题似乎与时间有关,不确定是否真的将twitter关闭到您的服务器的连接,然后打开另一个,如果它适用于您的应用程序处理或任何其他潜在变量。所以我在从twitter调用下一个搜索之前添加了一个简单的延迟 usleep(100000); ,并且它有效。