使用PHP和Twitter API创建回复

时间:2010-09-20 22:30:55

标签: php jquery ajax twitter

这是与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会添加到FORM中。 FORM将需要另一个隐藏字段,该字段最初将为空白,因此当用户提交没有回复ID时,他们只会发送推文。

但是我需要PHP文件中的一些代码来检查_POST是空还是空,如果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客户端,其中使用标签跟踪后台频道。

4 个答案:

答案 0 :(得分:1)

您可以在表单上始终使用隐藏字段,默认值为0.然后在您的单击闭包中使用获取隐藏字段的值并在您的ajax帖子中提交。

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

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

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

答案 1 :(得分:0)

您使用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放在

格式中即可

答案 2 :(得分:0)

我认为问题在于此片段

'in_reply_to_status_id => $tweetid'

应该是

'in_reply_to_status_id' => $tweetid

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

答案 3 :(得分:0)

如果in_reply_to_status_id不为空,则以下是一些包含$_POST['tweetid']的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的最后一个问题是回复必须包含要回复的用户的screen_name。因此,如果@bob回复@sarah,那么@sarah必须包含在$_POST['tweet']中。此screen_name应包含在用户输入回复的文本框中。