PHP-为什么我不能更新我们的Twitter状态?
作者:互联网
我花了最后三个小时来尝试使用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”是什么?如果我弄乱了令牌/令牌秘密,响应中的错误消息也会相应更改.但是,使用正确的凭据,我会不断收到上述提示(双关语).另外,我尝试了几种替代方法,例如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');
您无需再次传递密钥和机密,因为它们包含在用于签署请求的访问令牌中.
另请参阅我上面解释随机数的评论.
更新:
我已经在最小的环境中尝试了该代码,但是您是对的,它根本行不通.
您可以在GitHub gist中看到我的所有代码.这是故意最小的,避免了MVC和其他复杂性.
您可能会从访问令牌返回的Zend_Http_Client起作用的事实中感到安慰.
标签:twitter,oauth,zend-framework,php 来源: https://codeday.me/bug/20191209/2096202.html