在过去的三个小时里,我一直在尝试使用 Zend_Service_Twitter
和 Zend_Oauth_Token_Access
进行简单的 Twitter 状态更新。令人气愤的是,我不断收到以下回复:
object(Zend_Rest_Client_Result)#34 (2) {
["_sxml:protected"]=>
object(SimpleXMLElement)#39 (2) {
["request"]=>
string(33) "/1/account/verify_credentials.xml"
["error"]=>
string(20) "Invalid / used nonce"
}
["_errstr:protected"]=>
NULL
}
这是我试过的代码:
$token = new Zend_Oauth_Token_Access();
$token->setToken('my token');
$token->setTokenSecret('my token secret');
$params = array('accessToken' => $token,
'consumerKey' => 'my key',
'consumerSecret' => 'my secret'
);
$twitter = new Zend_Service_Twitter($params);
$response = $twitter->statusUpdate('simpletest');
究竟什么是“nonce”?如果我弄乱了 token / token secret ,响应中的错误消息会相应更改。但是,使用正确的凭据,我保持得到上面的随机数(双关语意)。此外,我尝试了几种替代方案,例如 this previous post on SO 中的替代方案。 .
如有任何帮助,我们将不胜感激!
更新:
如果它有帮助或使事情变得更容易,我正在尝试做的就是更新单个 Twitter 帐户的状态,即应用程序的 Twitter 帐户。正如我在@David Caunt 的回答下方评论的那样,每当“项目”发布到我们的网站时,该网站的 Twitter 状态将更新为对该项目的简要描述以及一个链接。就这样!在 oAuth 成为强制执行 API 调用之前,这曾经有效(所有需要的是实例化一个 Zend_Service_Twitter
并传入我们的凭据)。
最佳答案
查阅引用手册,我认为您的错误在于创建 Zend_Service_Twitter 对象。
$twitter = new Zend_Service_Twitter(array(
'username' => 'johndoe',
'accessToken' => $token
));
$response = $twitter->status->update('My Great Tweet');
您不需要再次传递 key 和 secret ,因为它们包含在用于签署请求的访问 token 中。
另请参阅我上面解释随机数的评论。
更新:
我已经在最小环境中尝试了代码,您是对的,它根本行不通。
您可以在 GitHub gist 中看到我的所有代码.它有意最小化,避免了 MVC 和其他并发症。
您可能会对从访问 token 返回的 Zend_Http_Client 确实有效这一事实感到欣慰。
关于php - 为什么我不能更新我们的 Twitter 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908237/