Создание ответа с использованием PHP и API Twitter - PullRequest
5 голосов
/ 21 сентября 2010

Это код PHP, который я использую в сочетании с jQuery .ajax для создания новых твитов:

/* 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;
}); 

Я бы хотел адаптировать форму, чтобы она также работала с ответами, чтобы пользователь мог щелкнуть по идентификатору твита, и этот идентификатор будет добавлен в ФОРМУ.ФОРМЕ понадобится другое скрытое поле, которое изначально будет пустым, поэтому, когда пользователь отправляет без идентификатора ответа, он просто отправляет твит.

Однако мне понадобится некоторый код в файле PHP, чтобы проверить, является ли _POSTпусто или пусто, если пусто, просто отправьте твит, но если у него есть идентификатор, создайте ответ.

Как я могу проверить, является ли поле пустым или заполнено идентификатором?

Iтакже нужна помощь в создании ответа.

Документация здесь: 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, специально предназначенный для использования на конференциях, где хэштегck обратный канал.

Ответы [ 4 ]

1 голос
/ 21 сентября 2010

Вы можете иметь скрытое поле в форме все время со значением по умолчанию, равным 0. Затем при закрытии клика используйте значение скрытого поля и отправьте его в своем посте ajax.

Затем PHP-контроллер может посмотреть опубликованное значение, если оно равно 0, он должен построить сообщение в twiters api как обновление статуса. Если значение больше 0, пост должен включать в себя свойство in_reply_to_status со значением, полученным из поста формы.

Тогда ваша ссылка «ответить» будет иметь JS для обновления этого скрытого элемента формы с правильным ID.

Не уверен насчет того, как создать пост для самого твиттера api. Надеюсь, это поможет некоторым.

0 голосов
/ 22 сентября 2010

Вот некоторый PHP, который будет включать in_reply_to_status_id, если $_POST['tweetid'] не пусто.

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

Одна из последних проблем с API Twitter заключается в том, что ответы должны содержать имя_пользователя, на который отвечает пользователь. Таким образом, если @bob отвечает на @sarah, то @sarah должно содержаться в $_POST['tweet']. Это имя экрана должно быть включено в текстовое поле, в которое пользователь вводит ответ.

0 голосов
/ 21 сентября 2010

Я думаю, что проблема в этом фрагменте

'in_reply_to_status_id => $tweetid'

должно быть

'in_reply_to_status_id' => $tweetid

Кроме этого, ответ Галена заслуживает рассмотрения.

0 голосов
/ 21 сентября 2010

вы используете 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']));
}

Вы просто должны указать идентификатор твита в форме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...