编程语言
首页 > 编程语言> > PHP-为什么我不能更新我们的Twitter状态?

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强制执行A​​PI调用之前,此方法曾经奏效(所需的只是实例化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