Sync Twitter to Sina/QQ/Fanfou etc. with tw2other Step by Step

on

Update@2011-06-05
对于使用了以前版本(Tw2other Version 0.90.2及以前版本)的tw2other,需要更新到新版本(编写本文时最新版本为Tw2other Version 0.92)的朋友,请注意以下几点。
1. 请将以前目录中的tweet.id文件copy到新版目录中,否则配置完毕以后,tw2other会重新同步以前已经同步过的推文,导致新浪微博等同步站点产生刷屏。
2. config.php文件有了一些改动,建议使用新版的config-sample.php文件,将以前的内容再重新修改一遍。
3. 不要忘记修改新版的cron.php,填入tw2other的Web访问URL。
4. 需要在浏览器里面访问一次tw2other/sina和tw2other/qq,完成这两个微博的OAuth验证。如果之前已经做过腾讯微博OAuth认证,确认原来的oauth目录还在,那么就无需再次访问tw2other/qq来获取认证。

正文修改版@2011-06-05

本文中某些链接需要翻墙才能访问,不过在现在这个社会,不会翻墙应该都不好意思跟人打招呼吧。

如果你觉得本文有用,请在twitter中fo @cluries,他是本文中主角tw2other的作者,当然fo我@kamusis也很欢迎。

需求:
Twitter使用者,但是鉴于某些需要交流的朋友仍然定居在新浪微博/腾讯微博/饭否等国内微博站点的,希望能够通过某种方法将Twitter上的推文自动同步到这些国内微博中。

前提条件:
1. 有一个在墙外的支持php的虚拟主机,这是最方便的,比如Dreamhost/Linode。
2. 有Twitter帐号
3. 有你想要同步的国内微博帐号

步骤:
1. 下载Tw2other:主页下载地址

2. 将zip文件上传到虚拟主机的某个目录中,该目录应该可以在Web上被访问到,解压,会生成Tw2other目录。

3. 注册Twitter OAuth App
登录Twitter Dev站点。
选择Register an Application。
Application Name随意填写,最好比较特别一些,保证和其他人不重复。
Application Type选择默认的Browser。
Callback URL填写可以在Web访问的tw2other中callback.php的地址,比如http://yourdomain/Tw2other/callback.php。(注意:默认解压出来的目录是Tw2other,不是tw2other,大小写敏感的)
Default Access type选择Read & Write。
提交并成功以后,在新页面会显示Settings信息,其中Consumer keyConsumer secret在后面的配置中会用到,请记好。

4. 如果要同步到新浪微博,需要注册新浪微博API,如果不需要同步到新浪微博,可以跳过此步。
点击此处申请新浪微博AppKey。
申请完毕以后,需要创建一个新App。基本上与申请Twitter App的界面很像。我的设置参看下图。
Create Sina Weibo App

注册完毕以后,在应用状态页面可以看到App Key,在后面的配置中会用到,请记好。

Update@2011-06-05:在Tw2other 0.92版本以后,还将使用到App Secret。

5. 修改Tw2other配置
将config-sample.php改名为config.php。修改config.php中的以下项:

//注意,在Twitter注册Application的时候,Application Type这一项要选中Browser 
define ( 'CONSUMER_KEY', '此处填入上面注册的Twitter OAuth App的Consumer key' );
define ( 'CONSUMER_SECRET', '此处填入上面注册的Twitter OAuth App的Consumer secret' );

//填写tw2other的url,注意目录的大小写 。
define ( 'TW2OTHER_URL', '此处填入tw2other的URL比如http://yourdomain/Tw2other/' );

//填写为你自己申请的SINA API KEY和API Secret
define ( 'SINA_API_KEY', '此处填入上面注册的新浪微博 App的AppKey' );
define ( 'SINA_API_SECRET', '此处填入上面注册的新浪微博 App的AppSecret');

填入自己的新浪微博用户名和密码

Update@2011-06-05:在Tw2other 0.92版本以后,由于同步新浪微博也使用OAuth认证,因此不再需要在config.php中再填入新浪微博的用户名和密码了。但是需要如5.1中描述完成OAuth验证

5.1 完成新浪微博OAuth验证
在浏览器里访问tw2other下的sina目录,比如:http://yourdomain/Tw2other/sina/,跟随页面提示,将会带你去新浪完成认证。

6. 授权tw2other访问Twitter
在浏览器里面访问tw2other,就是访问在config.php中定义的TW2OTHER_URL。打开页面如下图。
tw2other

点击“Sign in with Twitter”,进入twitter授权页面,这个页面大家应该很熟悉了,点击“Allow”就OK了。
Twitter authoriza

7. 如果要同步到腾讯微博,那么需要使用腾讯OAuth,不同步到腾讯微博的,跳过这步。
在浏览器里面访问tw2other下的qq目录,比如:http://yourdomain/Tw2other/qq/
认证方式跟上一步认证twitter相仿,不再赘述。

在完成了twitter,新浪微博,腾讯微博三个OAuth认证以后,在oauth目录中将存在以下三个文件。该目录通常在tw2other目录的上两层目录中,../../oauth/,由config.php中的OAUTH_DIR参数定义。

$ ls -l
total 12
-rw-r--r-- 1 wiskyorg pg480077 218 2011-03-21 00:34 tw2other.oauth
-rw-r--r-- 1 wiskyorg pg480077 156 2011-06-05 08:58 tw2other_qq.oauth
-rw-r--r-- 1 wiskyorg pg480077 163 2011-06-05 08:47 tw2other_sina.oauth

8. 如果要同步到饭否,需要修改config.php,不同步饭否的,跳过此步。
填入自己的饭否用户名和密码:

"fanfou" => array ('username' => 'your_username', 'password' => 'your_password'

9. 其他还可以同步的微博包括嘀咕,豆瓣,follow5等都是需要修改config.php,填入用户名密码即可。

10. 最后一步,也是最重要的一步,需要设置tw2other被定期调用,这样才能完成定期同步的功能。
修改tw2other下的cron.php文件,填入tw2other的Web访问URL。

$url = "http://yourdomain/Tw2other/index.php";

修改完毕的cron.php文件必须被某种机制定期调用,才能完成定期同步的功能,在Linux主机中通常通过crontab来完成。

一般带cPanel的主机都自带crontab job设置界面,但是在Dreamhost的cPanel界面中设置只能最小设置到10分钟运行一次程序,这不满足我们的需求,我们想1分钟同步一次,而Dreamhost是支持ssh登录的,因此可以直接在命令行中设置。

在任意目录中创建crontab.tw文件,文件名随意,文件内容如下。

$ cat crontab.tw
# tw2other
MAILTO="your_mail_address"
*/1 * * * * /usr/local/bin/php /yourdirectory/Tw2other/cron.php

然后执行以下命令,将cron配置更新到crontab中。

$ crontab crontab.tw

在配置到crontab中之前,可以手工执行/usr/local/bin/php /yourdirectory/Tw2other/cron.php这个命令,看看是否能够同步成功。

注意:其中的MAILTO表示每次cron执行以后都会将结果发送到指定邮件地址,这是为了在一开始测试使用,在tw2other功能正常以后,将此行删除,否则每分钟收到一封邮件很恐怖。
在收到的邮件里,邮件内容是no update或者Can’t update now!都是正常的,前者表示没有需要同步的内容,后者表示在指定的间隔时间内多次更新了,tw2other的默认更新时间间隔是50秒,由config.php中的INTERVAL变量控制,通常我们会保持默认值50秒不变。

至此,整个tw2other算是设置完毕。

更多的资源请访问:tw2other主页 | 作者cluries主页 | 作者cluries Twitter ID

26 Comments Add yours

  1. CHEUNG says:

    为什么我到了第六步“授权tw2other访问Twitter”这里,打开了的TW2OTHER_URL时,显示“No update”或者“Can’t update now!”,而不是进入授权页面?

  2. Kamus says:

    @Cheung
    如果你已经做过授权了,再次访问这个URL,就会进行同步的工作。
    你可以检查一下自己的twitter账户中settings->connections中是不是已经有tw2other的授权了?

  3. Kamus says:

    @Cheung
    检查你的config.php配置的OAUTH_DIR目录中是不是已经有tw2other.oauth文件了?如果有的话,删除,再重新重新访问一次TW2OTHER_URL。

  4. Liam says:

    hey, 有空能帮我解决下么,我第六步就不行了。我的这个空间我不知道要传到哪个目录去,根目录的话,执行tw2other就是404,如果放到和wordpress admin平行的目录就是空白,没反应了。。有时间的话帮我解答下啊,谢谢~~

  5. Kamus says:

    1.查看一下你有没有设置.htaccess,其中有没有“Options -Indexes”这样的设置,就是不允许浏览目录
    2.直接访问http://TW2OTHER_URL/index.php看看行不行。

  6. sfengz says:

    非常感谢~

  7. ChrisDay says:

    同样是第六步遇到的问题,在进行访问tw2other所在的URL时,总是出现404 not found,”The requested URL /tw2other/ was not found on this server”,我明明已经把tw2other文件夹传到了public_html里,困惑了,求指教。

  8. Kamus says:

    @ChrisDay
    tw2other还是Tw2other,如果你是默认解压的,那么目录名称是Tw2other,Linux是大小写敏感的。

  9. ChrisDay says:

    嗯,果然是大小写的问题,小白受教了,太感谢了,3Qverymuch

  10. Liam says:

    谢谢了啊,“1.查看一下你有没有设置.htaccess,其中有没有“Options -Indexes”这样的设置,就是不允许浏览目录” 这一步能详细说一下么?在哪里看?根目录么。。。sorry,我是小白

  11. huahua says:

    我新浪的API,也申请成功了,config.php中也配置好了,可还是无法同步,其他QQ、follow5的同步都是好的,请帮助解决下。

  12. Colin says:

    “@Cheung
    检查你的config.php配置的OAUTH_DIR目录中是不是已经有tw2other.oauth文件了?如果有的话,删除,再重新重新访问一次TW2OTHER_URL。”

    我已经整个tw2other目录都删掉然后再从新上载一次,可是还是出现“Can’t update now!” 和 “No Update”。请问如何解决?谢谢

  13. Colin says:

    我安装完成了,可是我twitter明明有更新,但是收到的cron email全都是 no update. 是我设置错了吗?

  14. Kamus says:

    tw2other已经修改新浪微博同步为OAuth认证,请下载新版本。
    http://code.google.com/p/tw2ohter/downloads/list

  15. hugo says:

    楼主!如果我的服务器运行Test.php被告知没有Curl Lib,是不是就只能换服务器?

  16. Sweet says:

    点 sign in with twitter 之后提示 “Could not connect to Twitter. Refresh the page or try again later.”确定不是主机屏蔽了 twitter,因为主机上还架了有 embr 是工作正常的

  17. mogita says:

    tips:
    更新tw2other 0.93时,上传时连接超时了,导致例如fanfou、twitteroauth等几个服务器上的目录没有被覆盖,其他根目录下的文件都已成功覆盖(按旧版相应设置了config.php和cron.php)。这种情况下,新版工作正常,至少同步饭否正常了。t.co转换也是正常的。

  18. W. says:

    博主你好。遇到3个问题,在推特中发推后,已经10分钟了都没有自动同步到其他微博。然后手动访问tw2other.xxx.com(用的二级域名)才会同步。
    第二个就是在发推后访问tw2other后显示一长串字符,是否是正常情况?
    第三个问题就是在这些字符最后有两个Warning,Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/laowtk/public_html/tw2other/t163/T163.php on line 80
    另一个是renren的。请问是不是没设置好?

  19. kamus says:

    @W
    1. 自动同步是通过crontab调用cron.php文件来完成的,你是否有作相应设置?
    2. 我设置完以后就没有主动访问tw2other,所以不确认是不是问题
    3. 看上去是没有设置好,我建议你先只设置一个站点的同步,比如新浪微博,看看是否能够成功,其它的站点设置先从config.php删掉。

  20. cyxhorse says:

    请教下博主,第六步时访问 TW2OTHER_URL 是出现 Warning: mkdir() [function.mkdir]: Permission denied in /home/cyxhor/domains/cyxhorse.tk/public_html/Tw2other/init.php on line 94
    OAUTH_DIR VALUE WRONG! 是怎么回事?已经把 Tw2other 和子文件夹的权限设成 777 了。
    当手动修改 OAUTH_DIR 后再访问出现 OAUTH_DIR VALUE WRONG! 的提示。
    谢谢博主了

  21. Mark says:

    请问我的邮件收到这个是什么意思?
    oauth_consumer_key=2320627987&oauth_nonce=6e04fe5c19e48edff92f4413a4b542d8&oauth_signature=vbjbvBiPlaQbFsBlsUgACLwBg%2Bc%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1328068022&oauth_version=1.0&status=Google%E5%9C%B0%E5%9B%BE%E6%9C%8D%E5%8A%A1%E6%B2%A1%E8%8E%B7%E5%BE%97%E8%B5%84%E8%B4%A8%EF%BC%8C%E5%8F%88%E4%B8%80%E6%A0%B7%E9%A1%B9%E6%9C%8D%E5%8A%A1%E8%A6%81%E7%BB%99GFW%E4%BA%86{“request”:”/statuses/update.json”,”error_code”:”400″,”error”:”40022:Error: source paramter(appkey) is missing”}

  22. x says:

    能支持gae吗.

  23. Mark says:

    请问那个新浪微博的APPKEY需要提交审核吗?

  24. Mark says:

    我到第6步:授权tw2other访问Twitter,点击接受后,返回是一堆代码的加载,但是停止后,在twitter上面查看授权是成功,然后发布tweet之后,cPanel返回给我邮件也是一堆乱码,而且没有同步成功到微博,那堆乱码我在前面已经留言了,博主指导一下???

  25. Joey says:

    Warning: mkdir() [function.mkdir]: Permission denied in /home/allblues/www/joey/Tw2other/init.php on line 94
    OAUTH_DIR VALUE WRONG!

    同问这个错误提示的解决方法

Leave a Reply to Mark Cancel reply

Your email address will not be published. Required fields are marked *