-1

我想将一些文本自动发布到我的应用程序 Twitter 帐户。我为此创建了一个帐户,并获取了所有需要的信息并为其编写了一个 php 代码。这是简单的代码:我只是为了测试发布能力:

    <?php
    require_once 'oauth/twitteroauth.php';
    $message = "hiiiiiii"; #actual message to twitter

    define("CONSUMER_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");    
    define("CONSUMER_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    define("OAUTH_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    define("OAUTH_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
print_r($connection);

    $content = $connection->get('account/verify_credentials');
//print_r($content);


    $connection->post('statuses/update', array('status' => $message));
   ?>

我从帐户中获取信息,所以我认为连接正常,但为什么我不能发布任何东西?我试图发布此消息,但在执行此代码后,我的推特上没有任何反应,没有显示新推文????

$connection->post 是一种方法:

 /**
   * POST wrapper for oAuthRequest.
   */
  function post($url, $parameters = array()) {
    $response = $this->oAuthRequest($url, 'POST', $parameters);
    if ($this->format === 'json' && $this->decode_json) {
      return json_decode($response);
    }
    return $response;
  }
4

1 回答 1

0

如果您能够使用这些凭据从帐户接收信息,我的第一个停靠点是您的应用程序具有读取写入(发布)权限:

访问 dev.twitter.com/apps。选择您的应用程序,然后在“设置”->“应用程序类型”下找到您需要的内容。

尽管这不起作用,但无论您在通过此应用程序发布到您的帐户的代码中进行了什么更改都不会起作用,因为该功能超出了您自己设置的权限。所以现在我们知道您可以发布:

改变

$connection->post('statuses/update', array('status' => $message));

$result = $connection->post('statuses/update', array('status' => $message));

然后看看 $result 的值是多少。这可能会提供一些线索

好的,所以响应告诉您,您仍然没有权限,您需要重新生成令牌并访问凭据,然后使用它们更新您的代码:

 define("CONSUMER_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");    
 define("CONSUMER_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
 define("OAUTH_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
 define("OAUTH_SECRET", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

这些凭据仍然附加了以前的权限,当您请求新令牌时,它将引用新权限并允许您发布。

于 2013-08-07T07:34:27.507 回答