代码之家  ›  专栏  ›  技术社区  ›  karim79

为什么我不能更新我们的Twitter状态?

  •  3
  • karim79  · 技术社区  · 14 年前

    Zend_Service_Twitter Zend_Oauth_Token_Access . 令人气愤的是,我一直得到以下回应:

    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调用之前,这种方法曾经有效(所需的只是实例化 把我们的证件交上来)。

    2 回复  |  直到 7 年前
        1
  •  2
  •   David Snabel-Caunt    14 年前

    参考参考手册,我认为您的错误在于创建Zend_Service_Twitter对象。

    $twitter = new Zend_Service_Twitter(array(
        'username' => 'johndoe',
        'accessToken' => $token
    ));
    $response   = $twitter->status->update('My Great Tweet');
    

    您不需要再次传递密钥和机密,因为它们包含在用于签名请求的访问令牌中。

    另请参阅我在上面解释nonce的评论。

    更新:

    我在一个最小的环境中试过代码,你说得对,它根本不起作用。

    GitHub gist

        2
  •  1
  •   Shikiryu DhruvJoshi    14 年前

    Twitter服务器报告我的nonces有问题,当错误 在签名里。

    我的OAuth代码为大多数 请求,但在尝试发布新的 “nonce”作为回应。

    经过多次调试,我发现 未能将空格编码为%20 而是以+的形式发送。 工作完美。

    Twitter服务器应该报告 签名有问题,不是 现在。

    会很好的。。。我只想离开 这张便条是下次有人 谷歌搜索“无效/使用” 一旦“他们知道他们必须看 他们的编码也是。

    http://code.google.com/p/twitter-api/issues/detail?id=1059 (评论中的其他解决方案)