【问题标题】:retrieving direct messages twitter api检索直接消息 twitter api
【发布时间】:2015-11-06 06:52:58
【问题描述】:

我想使用 TwitterAPIExchange.php 从 twitter 检索直接消息。我的应用程序中的设置是:写/读和直接消息。我错过了什么?圣诞快乐

更新代码

   $settings = array(
  'oauth_access_token' => $accessToken,
  'oauth_access_token_secret' => $accessTokenSecret,
  'consumer_key' => $consumerKey,
  'consumer_secret' => $consumerKeySecret
);
$i = 0;
$cursor = -1;

do {
  $url = 'https://api.twitter.com/1.1/direct_messages.json';
  $getfield = '?cursor='.$cursor.'since_id=240136858829479935&count=1';
  $requestMethod = 'GET';
  $twitter = new TwitterAPIExchange($settings);
  $response = $twitter->setGetfield($getfield)
                      ->buildOauth($url, $requestMethod)
                      ->performRequest();

  $response = json_decode($response, true);

  if (!empty($response["next_cursor_str"])) {
    $next_cursor = $response["next_cursor_str"];
  } else {
    $next_cursor = 0;
  }

  $errors = $response["errors"];

  if (!empty($errors)) {
    foreach($errors as $error){
      $code = $error['code'];
      $msg = $error['message'];
      echo "<br><br>Error " . $code . ": " . $msg;
    }
    $cursor = 0;
  } else {
      $users = $response['tweets'];
      foreach($users as $user) {
          echo 'tweet:'  .  $user['text'] . '</br>';
      }
  }
  if ($next_cursor != null) {
    $cursor = $next_cursor;
  }
} while ( $cursor != 0);

解决了。 请阅读可以帮助您的代码。

 ini_set('display_errors', 1);
 require_once('TwitterAPIExchange.php'); 
$settings = array( 
    'oauth_access_token' => "xxx",
    'oauth_access_token_secret' => "xxx",
    'consumer_key' => "xxx",
    'consumer_secret' => "xxx");
  $url = 'https://api.twitter.com/1.1/direct_messages.json';
  $getfield = '?since_id=240136858829479935&count=1';
  $requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest(),$assoc = TRUE);

echo "<h3>Mensajer directos</h3>";          
foreach($string as $items)
 {
            $url = 'https://api.twitter.com/1.1/direct_messages/show.json?';
            $requestMethod = 'GET';
            $getfields = array('id' => $items['id']);
            $twitter = new TwitterAPIExchange($settings);           
            $do = $twitter->setGetfield($getfield)
                          ->buildOauth($url, $requestMethod)                         
                          ->performRequest();
            echo "<strong>Teet:</strong> ".$items['text']."<br />";
            var_dump(json_encode($items, true));
        }

【问题讨论】:

  • 输出是什么?有什么错误吗?
  • 任何错误..你可以看到它:turpin.es/turpin/direct.php
  • 我已经用更多细节更新了代码

标签: php api twitter


【解决方案1】:

我在这里看到的代码中的一个明显错误是 items 不是 direct_messages API 的响应对象。这是“推文”。

https://dev.twitter.com/docs/api/1.1/get/direct_messages 并查找 响应对象

假设您的应用已经为访问直接消息的用户提供了必要的权限,您是否可以尝试修改您的 for 循环,如下所示:

...
foreach ( $string ['tweets'] as $items ) {
    echo  $items['text'];
    ?>

$assoc = TRUE 已经负责将对象转换为关联数组。现在您需要遍历此数组中包含的响应对象。

【讨论】:

  • 感谢您的回复。我已经更新了代码,但我得到:错误 32:无法对您进行身份验证
  • 当然,这可能是因为 $settings 数组。您能否检查这些参数是否设置正确 - 检查您的应用程序中的值 @dev.twitter.com 会有所帮助! $settings = array( 'oauth_access_token' => $accessToken, 'oauth_access_token_secret' => $accessTokenSecret, 'consumer_key' => $consumerKey, 'consumer_secret' => $consumerKeySecret
  • 另外,请检查应用是否也有写权限。这 2 个注意事项将解决您的身份验证问题。
  • 嗨,谢谢。我的权限是正确的, $settings 数组也是。我已经重新审视了它。我正在尝试一个简单的代码,我认为 foreach 中存在问题: $responses = json_decode($response, true); if (is_array($responses)){ $users = $responses['tweets']; foreach($responses as $user) { echo 'tweet:' 。 $用户['文本'] 。 ''; } }
猜你喜欢
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2011-09-17
  • 2017-05-22
  • 1970-01-01
相关资源
最近更新 更多