Google Buzz 停止服务,所以本文的方法不再适用

对于可以直接访问 Twitter 的服务器来说,同步 Twitter 对 WordPress 而言是易如反掌,相关的插件数都数不清,质量优秀的也有许多,挑一款合适的即可。但是许多针对国内用户的国外虚拟主机,服务商是不允许在虚拟主机上架设 Twitter 的 API 的(避免服务器 IP 被墙),当然也就无法直接透过虚拟主机访问 Twitter,一种比较简单(?)的方法是使用 Buzz 的同步功能,将 Twitter 同步至 Buzz,再将 Buzz 同步至 WordPress 中。

第一步,打开你的 Buzz 所在的 Gmail 账号,点击右上角的齿轮图标选择“Gmail 邮件设置”,到 Buzz 选项卡中将 Twitter 设置为关联网站。

第二步,将下面的 JavaScript 代码导入到主题中,此代码可 AJAX 显示 Buzz 信息。(需要引入 jQuery 库)

//googlebuzz ajax
function getGoogleBuzz(username, n, div) {
    var data = {
        q: 'http://buzz.googleapis.com/feeds/' + username + '/public/posted',
        num: n,
        output: 'json',
        v: '1.0'
    };
    $.ajax({
        url: 'http://ajax.googleapis.com/ajax/services/feed/load',
        data: data,
        dataType: 'jsonp',
        success: function(json) {
            if (json.responseStatus != 200) {
                div.html('<b style="color:red">' + json.responseDetails + '</b>');
                return;
            };
            var entries = json.responseData.feed.entries;
            var length = entries.length;
            if (length == 0) return;
            var ul = $('<ul class="gb" style="display:none"></ul>').appendTo(div.html(''));
			//时间显示格式转换
            var formatDate = function(dstr) {
                var dat = new Date(),
                tody = new Date();
                dat.setTime(Date.parse(dstr));
                var td = tody.getDate(),
                tm = tody.getMonth() + 1,
                ty = tody.getFullYear(),
                th = tody.getHours(),
                tmn = tody.getMinutes(),
                ts = tody.getSeconds();
                var d = dat.getDate(),
                m = dat.getMonth() + 1,
                y = dat.getFullYear(),
                h = dat.getHours(),
                mn = dat.getMinutes(),
                s = dat.getSeconds();
                if (y == ty && m == tm && d == td) {
                    var dh = th - h;
                    if (dh > 0) {
                        return dh + "小时" + (dh > 1 ? "": "") + "之前"
                    }
                    var dmn = tmn - mn;
                    return dmn + "分钟" + (dmn > 1 ? "": "") + "之前"
                } else {
                    return y + "/" + m + "/" + d
                }
            };
            for (var i = 0; i < length; i++) {
                var pDate = formatDate(entries[i].publishedDate);
                var snippet = entries[i].contentSnippet;
                snippet = snippet.replace(/\b(https?\:\/\/\S+)/gi, ' <a href="$1" target="_blank" rel="nofollow external">$1</a>');
				//将‘neverweep'替换为你的twitter账户名(非昵称),可去除twitter信息中的用户名
                snippet = snippet.replace(/neverweep:/, '');//不需要则直接删除本行
				//控制列表显示,可在此基础上修改。默认格式<li>内容 @ 时间</li>
                ul.append('<li>' + snippet + ' @ <a href="' + entries[i].link + '" target="_blank" rel="nofollow external">' + pDate + '</a></li>');
            };
			//设定显示方式,fadeIn为淡入效果,可选slow,normal,fast三处速度参数。可替换fadeIn为animate或者show。
            ul.fadeIn('slow');
        }
    });
};
$(document).ready(function(){
//设定用户 Buzz 账号、显示数量、绑定的 div class。
   getGoogleBuzz('xxxxx', 5, $('.google-buzz'));
});

此 JavaScript 代码来源于http://aext.net/2010/02/pull-google-buzz-with-jquery/,这是我见到的最简洁的能实现此功能的代码。我在此代码的基础上作了修改,加入了时间的显示格式,加入了新标签打开链接,去除 Twitter 用户名等一些比较实用的小功能。

第三步,在需要显示 Buzz 的页面中(文章页,页面或者是文本小插件)插入以下 HTML 代码。

<div class="google-buzz">
</div>

最终显示格式的例子:

<div class="google-buzz">
    <ul style="" class="gb">
        <li>
              内容 @<a rel="nofollow external" target="_blank" href="Buzz的地址">时间</a>
        </li>
    </ul>
</div>

另外大概说一说利用 Gtalk 发送 Twitter 的方法,此方法是基于 Twitalker,一个搭建在 Google App Engine 上的 Twitter 接口,

  1. Google App Engine申请一个账号,如果已有 Gmail 的话只要确认一下手机就可以,免费的。
  2. 申请完之后,再申请一个 app 项目,申请完后会给你一个 XXXX.appspot.com 的地址。
  3. 下载 Twitalker,项目地址http://code.google.com/p/twitalker
  4. *申请一个 Twitter api:
    • https://dev.twitter.com/apps申请 api。
    • Application Name 随便填,中英皆可;Description 随便填,中英皆可;Application Website 随便填,是网址就行。Organization 随便填,中英皆可;Application Type 必须选择 Browser;Callback URL 必须为 http://XXXX.appspot.com/oauth/twitter/callback 。Default Access type 为 Read & Write 。Application Icon 选择一个自己喜欢的图标即可。
  5. 把申请下来的 api 的 Consumer Key 、 Consumer Secret 和 XXXX.appspot.com 的地址按格式填入到 Twitalker 中,具体说明:http://code.google.com/p/twitalker/wiki/SetupGuide
  6. *下载 python 平台(2.6 版)和 Google App Engine Launcher,把 Twitalker 上传到你的 appspot 中,具体方法搜索“GAE 上传”,步骤非常详细。
  7. *登陆 XXXX.appspot.com,点击 oauth 认证,连接到 Twitter 后,填入你的用户名和账号,返回到appspot,显示一个认证码。
  8. 登陆 Gtalk,加XXXX@appspot.com 为好友,把认证码发过去,绑定成功。

附有星号的步骤需要翻墙,如果嫌麻烦,也可以在网上搜寻他人建好的 Twitalker。