边栏显示推特消息

4 条评论

@zckevin 前两天提起要用php自己写推特的边栏挂件,我没理解清楚,当做只是在边栏显示推特的消息了,于是弄了这么个粗糙的东西。不过这个小功能应该也还是有不少人需要的吧,需要的取便是。

功能: user_timeline.php 中转推特API的数据,中转文件支持跨域调用,可以限制请求的用户。

使用:将 user_timeline.php 上传至支持 curl 和能访问推特 API 的空间里,然后网页使用 JS 调用,取回 json 格式的数据,处理好之后显示。

详细步骤:

1、引入 jquery,方便跨域调用中转的数据,用 google 托管的

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

不过现在国内网络对它不友好,推荐抛弃它...如果是使用 html5 标准了,可以不指定type

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

这个简单,大部分人的博客本身就准备好的叻。

3、再引入一只 JS,这是用来解析数据的,如果有需求,可以自己修改,或者重写,这个 JS 的源作者应该是 Ray 。可以将我空间里的这份JS另存为再上传到自己的空间。(额,就是要用我的...那也可以的...)

<script type="text/javascript" src="http://api.isouth.org/js/tweet.js"></script>

4、引入了这两个JS之后,一句 javascript 语句:

$.getJSON("http://api.isouth.org/tweet/user_timeline.php?screen_name=qiyi&include_rts=true&count=7&callback=?", twitterCallback2);

只要将请求的 screen_name 修改为自己的名字就可以了,要求自己的推文没有加锁保护。显示消息的地方要求为如下的 html 结构:

<ul id="twitter_update_list">Hello World!</ul>

这里是允许跨域请求的,但是我在我的这个文件里限制了使用用户的,所以就不要尝试调用我的了,php源码:

  1. <?php
  2. $allowed_users = array(
  3. 'qiyi'
  4. );
  5. if( !isset($_GET['screen_name']) || !in_array($_GET['screen_name'], $allowed_users) ){
  6. echo 'the user is not allowed by admin';
  7. die();
  8. }
  9.         if(isset($_GET['callback']))
  10.         {
  11.             $callback = $_GET['callback'];
  12.         unset($_GET['callback']);
  13.     }
  14.     $par = '';
  15.     $par .= http_build_query($_GET);
  16.     $user_timeline = 'http://api.twitter.com/1/statuses/user_timeline.json?';
  17.     $user_timeline .= $par ; 
  18.     $ch = curl_init();
  19.     curl_setopt($ch, CURLOPT_URL, $user_timeline);
  20.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  21.     $output .= curl_exec($ch);  
  22.     if( 200 == curl_getinfo($ch, CURLINFO_HTTP_CODE) ){
  23.          if(isset($callback)){
  24. header('content-type: application/x-javascript');
  25.             echo $callback."(".$output.")";
  26.         }
  27.         else{
  28.             echo $output;
  29.         }
  30.     }
  31.         curl_close($ch);
  32. ?>

效果,看右边。

相关日志 Relate Posts

“边栏显示推特消息”4条留言

  1. 沙发!

    PS:无关问题,怎样卸载Chrome安装的皮肤……怎样手动安装Chrome的皮肤,每次都要通过web方式么- -?

  2. 楼上的“无关问题”很有意思


  3. 博主,我回来了,好久不见

  4. :smile: 空间不支持curl 能用这个方法吗!?

发表留言(Ctrl+Enter提交)