【问题标题】:Creating a reply using PHP and the Twitter API使用 PHP 和 Twitter API 创建回复
【发布时间】:2011-04-14 22:25:52
【问题描述】:

这是我与 jQuery .ajax 结合使用以创建新推文的 PHP 代码:

/* Create a TwitterOauth object with consumer/user tokens. */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

    $qtweet = $_POST['tweet'];
    $connection->post('statuses/update', array('status' => $qtweet));

数据由表单和一些 jQuery .ajax 提供:

<form id="tweethis" method='post' action=''>
    <textarea style="width: 42em;" name="tweet" rows="5" id="tweet" ></textarea>
    <br />
    <p class="confirm" style="padding-bottom: 4px;">Tweet Sent.</p>
    <span id="charLeft">140</span>  Characters left
    <br />
    <input type='submit' value='Tweet This!' name='submit' id='submit' />
</form>

$("#tweethis #submit").click(function() {  
    //The Tweet
    var tweettxt = $("textarea#tweet").val();
    var ptweettxt = 'tweet=' + tweettxt;
    $.ajax({
      type: "POST",
      url: "tweet.php",
      data: ptweettxt,
      success: function() {
        $('#tweethis .confirm').css('color','red').slideDown(500).delay(3000).slideUp(500);
        $('textarea#tweet').val("");
      }
    });
    return false;
}); 

我想调整表单以处理回复,因此用户可以单击推文的 ID,该 ID 会添加到表单中。表单将需要另一个隐藏字段,该字段最初为空白,因此当用户在没有回复 ID 的情况下提交时,他们只需发送一条推文。

但是我需要 PHP 文件中的一些代码来检查 _POST 是否为空或 null,如果为 null,则只发送一条推文,但如果它有一个 ID,则创建一个回复。

如何检查该字段是否为空或已填充 ID?

我还需要帮助创建回复。

文档在这里:http://dev.twitter.com/doc/post/statuses/update

这是我迄今为止为 PHP 编写的内容:

$qtweet = $_POST['tweet'];
$tweetid = $_POST['tweetid'];
$connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id => $tweetid'));

不确定我是否正确地构建了数组,或者 Twitter API 是否可以接受。

与所有这些相比,.ajax 将是微不足道的,因为我只是将隐藏的表单值作为 _POST 中的另一个值传递。

非常感谢任何帮助,这是我完成我的第一个 PHP 项目的最后一件事,我创建了自己的 Twitter 客户端,专门设计用于使用主题标签跟踪后台通道的会议。

【问题讨论】:

    标签: php jquery ajax twitter


    【解决方案1】:

    您可以一直在表单上使用默认值 0 的隐藏字段。然后在您的点击关闭中使用获取隐藏字段的值并将其提交到您的 ajax 帖子中。

    然后 PHP 控制器可以查看发布的值,如果它是 0,它应该构建发布到 twitters api 作为状态更新。当它大于 0 时,构建帖子以包含“in_reply_to_status”属性以及从表单帖子获得的值。

    然后你的“回复”链接将有一些 JS 来使用正确的 ID 更新隐藏的表单元素。

    虽然不确定如何将帖子构建到 twitters api 本身。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您使用empty() 来检查是否为空 =)

      你还需要更正这条线...

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

      不要将变量放在引号中

      也许像

      if ( empty( $_POST['tweetid'] ) ) {
          $connection->post('statuses/update', array('status' => $qtweet));
      }
      else {
          $connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id' => $_POST['tweetid']));
      }
      

      您只需将推文的 id 放入表单中

      【讨论】:

      • 虽然代码正确,但似乎没有生成回复。发送推文时,in_reply_to... 部分不会被填充。
      • 我修复了代码中的一个错误。您必须确保已设置 $_POST['tweetid']
      【解决方案3】:

      我认为问题出在这个 sn-p

      'in_reply_to_status_id => $tweetid'
      

      应该是

      'in_reply_to_status_id' => $tweetid
      

      除此之外,Galen 的 answer 值得考虑。

      【讨论】:

        【解决方案4】:

        如果$_POST['tweetid'] 不为空,这里是一些包含in_reply_to_status_id 的PHP。

        <?php
        $options = array();
        $options['status'] = $_POST['tweet'];
        if (!empty($_POST['tweetid']) {
          $options['in_reply_to_status_id'] = $_POST['tweetid'];
        }
        $connection->post('statuses/update', $options);
        

        Twitter API 的最后一个问题是回复必须包含被回复用户的屏幕名称。因此,如果@bob 正在回复@sarah,那么@sarah 必须包含在$_POST['tweet'] 中。这个 screen_name 应该包含在用户正在输入回复的文本框中。

        【讨论】:

          猜你喜欢
          • 2014-03-24
          • 2013-03-01
          • 2011-09-20
          • 2015-08-15
          • 2016-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多