【问题标题】:How do I show a specific tweet? (with PHP/jQuery)如何显示特定推文? (使用 PHP/jQuery)
【发布时间】:2010-10-06 13:13:58
【问题描述】:

我想在我的页面上嵌入特定的推文,例如 http://twitter.com/myusername/status/123465678 我还希望能够显示我的最新推文,这些推文具有特定的标签。

我自己尝试使用 Twitter API CodeIgniter 库执行此操作,但我需要向 Oauth 注册我的应用程序。在页面上嵌入一条推文似乎有点过头了。

我更喜欢用 PHP 来做这件事,但可能需要适应 jquery 版本。谁能指点我一个可以做到这一点的脚本?

谢谢

【问题讨论】:

  • 我注册了 oAuth,更改了变量并刷新了页面。现在,当我查看页面时,我被重定向到 twitter 以“允许访问”。这太疯狂了,这肯定不是用 PHP 嵌入 1 条推文的唯一方法。
  • 我只想用 PHP 在页面上显示一条推文。

标签: php jquery codeigniter twitter


【解决方案1】:
$.ajax({
  url: 'http://api.twitter.com/1/statuses/show/4190230693289984.json',
  dataType: 'jsonp',
  data: null,
  success: function (data) {
    // Do something with the data here.
    // I am just logging the object to the console.
    console.log(data);
  }
});

上面获取单个推文的 json 对象 (http://twitter.com/CERN/status/4190230693289984)。请注意使用“jsonp”来允许客户端的浏览器访问与您的不同的域。更多信息请参考http://api.jquery.com/jQuery.ajax/

【讨论】:

    【解决方案2】:

    我认为您可以在不使用 Oauth 的情况下使用公共提要。我有一段时间没有使用它了,但是这段代码曾经对我有用:

    $url = "http://twitter.com/yourtwittername";
    $h = curl_init($url);
    curl_setopt($h,CURLOPT_POST,TRUE);
    curl_setopt($h,CURLOPT_POSTFIELDS,$params);
    curl_setopt($h,CURLOPT_RETURNTRANSFER,TRUE);
    curl_setopt($h,CURLOPT_VERBOSE,1);
    curl_setopt($h,CURLOPT_HTTPHEADER,array('Expect:'));
    $response = json_decode(curl_exec($h));
    $results = curl_getinfo($h); # to check for http response, etc.
    curl_close($h);
    // additional processing on response ...
    

    【讨论】:

      【解决方案3】:

      我用 curl 做过一次,你可能必须先在你的 php.ini 中启用它

      这是一个可能为你完成这项工作的课程

      <?php
      class TwitterGrub{
          private $user;
          private $password;
      
          function __construct($user, $password) {
              $this->user = $user;
              $this->password = $password;
          }
      
          function setUser($user) {
              $this->user = $user;
          }
      
          // same for password
      
      
          function twitterCapture() {  
      
      
             $ch = curl_init("https://twitter.com/statuses/user_timeline.xml");  
             curl_setopt($ch, CURLOPT_HEADER, 1);  
             curl_setopt($ch,CURLOPT_TIMEOUT, 30);  
             curl_setopt($ch,CURLOPT_USERPWD,$this->user . ":" . $this->password);  
             curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
             curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);  
             curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);  
             $result=curl_exec ($ch);  
             $data = strstr($result, '<?');  
      
             $xml = new SimpleXMLElement($data);  
      
            return $xml;  
      }   
      
      
      function twitterDisplay($twitNum = 2){
          $xml = $this->twitterCapture(); 
      
          for($i= 0; $i<$twitNum; $i++){ 
              echo   $xml->status[$i]->text;    
          }
      }
      

      【讨论】:

      • SimpleXMLElement 对象([错误] => 不支持基本身份验证);
      • “不支持基本身份验证” 这是我之前使用 CodeIgniter Twitter API 时遇到的错误。我猜你现在没有 oAuth 什么都做不了。
      • 看来你是对的......如果你找到了解决方案,请发布
      【解决方案4】:

      你不能只解析公共 RSS 吗?

      【讨论】:

      • 是的,现在就这样做。我让问题变得比原来更复杂。我试图显示一条超过 20 多条推文的推文,这就是我收到错误的原因,所以我开始弄乱 oAuth。
      【解决方案5】:

      您可以使用纯 javascript,请参阅 http://twitter.com/goodies/widget_profile 以获取 twitter 个人资料小部件。然后对其进行自定义以仅显示一条推文(或查看他们的 js 代码:D)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-20
        • 2016-12-31
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多