Home > Tech > Twitter > 支持OAuth的Twip

支持OAuth的Twip

Add a comment April 25th, 2010 http://s.ibron.co/lgjpw2

Twitter官方宣布将在6月30日终止对Basic Authorization验证方式的支持,广大使用API的天朝网民纷纷表示鸭梨很大~目前最新版的3.0版Twip还不支持OAuth(2.2版支持),前几天问了下yegle童鞋,最近似乎都没有更新计划。正好最近不算太忙,一时手痒,经过一星期的“艰苦奋战”,终于让Twip 3.0支持了OAuth,命名为Twip 3.1~~原本前几天就打算发出来的,这几天不断有改进的想法冒出来,本着“精益求精”的想法,拖到了今天…… :!:

系统要求

  1. PHP版本大于5.2.4并已启用curl
  2. 若采用Apache需支持mod_rewrite
  3. mcrypt库(用于加密access token,没有也能工作)

配置方法

猛击这里下载源代码。另外,也可以使用svn checkout这个地址:http://twip.googlecode.com/svn/branches/heybronco/。基本的配置方法可参见yegle写的wiki。这里主要说一下OAuth的部分。

  1. 使用OAuth验证发推时将不显示连接到twip的客户端,而是显示与twip中OAuth CONSUMER_KEY和CONSUMER_SECRET对应的注册程序。源代码里已经包含可用的CONSUMER_KEY和CONSUMER_SECRET,对应的程序名称为”Development”,这个是编写”TwitterOAuth Library”的Abraham Williams放在示例代码中的(已经失效)。若希望使用自定义的程序名,请前往Twitter程序中心注册一个新程序,注册的时候Application Type选”Browser”,Callback URL填入填写能访问到”callback.php”文件的完整网址,Default Access type选”Read & Write”。注册完成后将”CONSUMER_KEY”和”CONSUMER_SECRET”填入”oauth_config.php”中。
  2. “oauth_config.php”为OAuth相关配置的文件,其中OAUTH_DIR指定保存OAuth token文件的位置,请放在一个web用户无法访问的目录中,比如public_html(www)目录的上一级,注意权限问题,同时确保以”/”结尾CONSUMER_KEYCONSUMER_SECRET使用默认或者替换成自己的;OAUTH_CALLBACK中填写能访问到”callback.php”文件的完整网址;SECURE_KEY中保存的是加密数据所用的随机字符,可以随便填入字符,或者保持默认。
  3. 检查index.php中”enable_oauth”项已经为true以启用OAuth,配置完成。

使用方法

访问twip的首页,页面将显示当前Twip所使用的身份验证方法等运行状态及操作说明。注意,若twip的架设者启用了”PRIVATE_API”选项,首页上将给出提示,此时需要确保自己处于被允许的用户范围,否则即使获得了access token也无法使用此API。另外,access token是否被加密存储也会显示在首页上。

获得access token需要翻墙。点击”Sign in with Twitter”按钮,进入Twitter登陆界面,输入自己的用户名和密码后,转到授权界面,询问是否授予相应权限给应用程序,点击”Access”按钮,进入保存token界面,此时要求输入密码。这个密码是用于访问保存在twip服务器上的access token文件的密码,所有通过此twip进行的发推等操作均需要使用此密码,这里称为API密码。API密码可以与自己的Twitter密码相同或不同,但若要使用Mixero,请填写Twitter密码。因为Mixero不通过API来校验密码,若API密码与Twitter不同,要么无法登陆,要么无法获得Twitter信息。完成后点击”保存”按钮,页面跳转到首页。若能看到你的timeline,说明access token获得成功。之后就可以在客户端使用用户名和API密码登陆了。

如果忘记了自己的API密码,可以点击”Sign in with Twitter”按钮来重新获得access token,原来的记录将被覆盖。若不想再继续使用此API,可进入自己的Twitter设置界面,在”connections”页面中找到此API,然后点击”Revoke Access”来移除访问许可。当然,也可以直接把twip中保存的access token删除,方法是在首页上点击”login”,输入用户名和API密码后,点击”remove the token”即可。

使用Gravity等支持OAuth的客户端需要注意一下,在添加账户的时候验证类型要选Plaintext而不是Oauth/Secure,同时账户密码填入的是API密码。Update:用户名不能填email,否则会验证失败。(才知道原来能用email登陆Gravity,thanks to mxwu)

对于想使用byethost主机的筒子们屏蔽了twitter的主机,很遗憾,使用ip替换是没办法使用OAuth的。因为在请求token的时候若使用ip地址来访问,Twitter会返回一个301,重定向到twitter.com。若点击”Sign in with Twitter”之后出现”Could not connect to Twitter. Refresh the page or try again later.”,最大的可能是主机屏蔽了Twitter,目前除了换主机以外没有解决办法。当然,敝人水平有限,也许有解决办法也说不定,这个就等待高人来解决了。 :cool: 另一种可能是key和secret失效,这个可以通过查看Debug info的http_code来确定。若为401,则表示key和secret已经失效。

安全问题

之前在推上看到有人质疑兽兽@showfom的饭否会有安全性问题,这边也会着重考虑这个问题。

若空间支持mcrypt库,access token会被加密。是否加密会在首页显示,你可以据此决定是否使用此API。access token以API密码和SECURE_KEY作为密钥进行blowfish加密。API密码将进行MD5计算,结果拼接SECURE_KEY后进行第二次MD5计算,计算结果和access token的密文以文件的形式进行保存。这样,即使是twip的拥有者也无法使用access token。若空间不支持mcrypt库(这个基本很少吧),access token将不会加密。

当然,因为twip是完全开源的,谁都可以来修改代码,上面说的安全性不一定能得到保证。至于用不用,看你自己吧。

版权

Twip原版使用Mozilla Public License 1.1授权,TwitterOAuth库虽没写明授权协议,但也有相关授权说明。若需要进行再次开发以及发布,请一定遵从相关协议的说明。

其他

感谢党,感谢国家,感谢@yegle@xmxsuperstar,感谢Abraham Williams,感谢Dreamhost。

Twip原版的相关信息可参考其Project Website。TwitterOAuth库相关信息参考这里

ps一句,本来打算找个免费空间来演示的,可惜找了几个都没搞定,哎~~~大家就自己慢慢试吧~ :smile:

以上!

  1. April 25th, 2010 at 22:23 | #1
    Reply Quote

    沙发,谢谢了!

  2. April 25th, 2010 at 22:31 | #2
    Reply Quote

    @yueerfei
    呵呵~速度很快啊~~

  3. love_stef
    April 26th, 2010 at 13:13 | #3
    Reply Quote

    停止Basic Authorization验证方式会怎么样?普通的API没办法用了?

  4. April 26th, 2010 at 15:15 | #4
    Reply Quote

    @love_stef
    是的。普通API通过Basic Authorization来验证身份。

  5. April 26th, 2010 at 16:10 | #5
    Reply Quote

    狂顶了….谢谢了

  6. April 26th, 2010 at 17:54 | #6
    Reply Quote

    oauth + twip配合Gravity的成功例子么?

    折腾了许久也为成功。。

    不知道是Gravity的问题还是twip的问题。

  7. April 26th, 2010 at 19:35 | #7
    Reply Quote

    @mxwu
    嗯~文章里加了段说明,添加账户的时候验证类型要选Plaintext而不是Oauth/Secure,同时账户密码填入的是API 密码,可以再试一试。我自己测试是成功的。 :cool:

  8. i_maidou
    April 26th, 2010 at 19:51 | #8
    Reply Quote

    去折腾试试

    PS 这首歌很熟悉的说~

  9. April 27th, 2010 at 00:09 | #9
    Reply Quote

    @Bronco
    选plaintext的话还是oauth么?
    twitter马上要关闭plaintext验证了,所以在寻找oauth的方法。

  10. April 28th, 2010 at 00:07 | #10
    Reply Quote

    @mxwu
    是的。现在twip的工作原理是对Twitter的读写采用OAuth,所以Twitter那边关闭了basic auth也没问题。而twip与客户端的交互采用的是basic auth,所以会有个API密码。因为现在twip还无法直接转发OAuth的验证数据,所以采用了这种工作机制。

  11. April 28th, 2010 at 19:21 | #11
    Reply Quote

    俺也去折腾看看

  12. April 29th, 2010 at 15:43 | #12
    Reply Quote

    @Bronco
    多谢折腾了一会终于搞定了。
    Gravity一定要用用户名而不是email,这点补充进去吧:)

  13. April 29th, 2010 at 16:23 | #13
    Reply Quote

    @mxwu
    诶?我所有的登陆都是用用户名的啊~原来Gravity用email也可以啊? ;-) 新版twip是按照screen_name来保存token的,用email肯定是搞不定的。估计老版本的因为是直接发送,所以可以吧。anyway,thanks~

  14. May 1st, 2010 at 17:16 | #14
    Reply Quote

    您用的是Dreamhost空间吗?
    我在Dreamhost上的Twip本来用得好好的,这两天突然坏了,没有用OAuth,最基本的都不行了,那个测试网页应该可以显示5条最新tweet的,现在也显示failed。换了好几个版本的Twip都不行,太郁闷了,难道是Dreamhost把这个封了?……

  15. May 2nd, 2010 at 01:09 | #15
    Reply Quote

    @小骆驼商队
    是的啊~目前来看似乎一切正常~
    其实检查API是否正常工作最简单和直接的办法是直接获取public_timeline,比如输入:“你的api地址”/statuses/public_timeline.xml,如果API正常,会返回xml格式的最新的推。如果问题出在Twitter服务端,也会返回相应的错误信息,这样排查问题会快很多。
    提醒一下,如果通过API进行调用时密码错误超过一定次数(似乎是5次,不太确定),账户会被锁定一定的时间。你可以通过上面说的获得xml文件的方式获得提示信息。
    Good Luck :cool:

  16. May 2nd, 2010 at 14:05 | #16
    Reply Quote

    @Bronco
    非常感谢!现在弄好了 :)

  17. May 3rd, 2010 at 02:19 | #17
    Reply Quote

    Gravity的作者从6390版本开始,屏蔽了API的plaintext认证方式,怎么解决?!

  18. May 3rd, 2010 at 22:52 | #18
    Reply Quote

    @小元
    你从哪得到的这个消息?我的6390能正常工作啊~Authentication选的是”Proxy/Plaintext”。

  19. May 4th, 2010 at 00:12 | #19
    Reply Quote

    @Bronco
    我在opda上看到盖茨大大说的,然后试了gravity6390版,在add用户的时候没法选择plaintext啊。

  20. May 4th, 2010 at 00:25 | #20
    Reply Quote

    @Bronco
    我又google了一下,6390确实只能通过oauth登陆,很多人都开始用6375这个老版本,比如我。bronco兄你核实一下?

  21. Sphinx
    May 4th, 2010 at 00:37 | #21
    Reply Quote

    Could not connect to Twitter. Refresh the page or try again later.
    点击”Sign in with Twitter”按钮时一直这样~请问怎么解决啊??

  22. Sphinx
    May 4th, 2010 at 01:30 | #22
    Reply Quote

    @小元
    貌似正版的有plaintext方式~D版没有
    不知以后会不会一直这样

  23. Sphinx
    May 4th, 2010 at 01:32 | #23
    Reply Quote

    @Bronco
    Could not connect to Twitter. Refresh the page or try again later.
    点击”Sign in with Twitter”按钮时一直这样~请问怎么解决啊??
    换了hyperphp和byteact两个空间都是这样~

  24. May 4th, 2010 at 10:17 | #24
    Reply Quote

    @小元
    嗯,我的是正版的Gravity,有Proxy/Plaintext的,不知道D版是不是没有了。 :cool:

    @Sphinx
    这个一般是因为主机空间把Twitter域名给屏蔽了。因为OAuth验证的关系,使用ip地址来代替域名是无效的,会自动跳转。目前我也没什么办法….. :!: 不如你试试2.2版的twip看看能不能连接~~

  25. weather8620
    May 4th, 2010 at 14:44 | #25
    Reply Quote

    悲剧。。 Sign in with Twitter 按钮
    只能 输入密码。 没有输入账号的 地方。

  26. Zhoong
    May 4th, 2010 at 15:41 | #26
    Reply Quote

    dreamhost可以搭建支持ouath的api么?

  27. May 4th, 2010 at 15:56 | #27
    Reply Quote

    @weather8620
    你说的是跳转到Twitter之后?不应该啊~~仔细看一下使用说明,是不是哪里弄错了?

    @Zhoong
    可以啊~我的就是在dh上搭建的。

  28. ningye
    May 4th, 2010 at 16:49 | #28
    Reply Quote

    现在有没有在哪个freehost上成功搭建的呢?

  29. kajisan
    May 4th, 2010 at 17:33 | #29
    Reply Quote

    Could not connect to Twitter. Refresh the page or try again later.

    dreamhost 。。。难道也悲剧了?

  30. 物语哲言
    May 4th, 2010 at 17:55 | #30
    Reply Quote

    我的空间不支持twip3,只支持twip2。怎么弄

  31. Sphinx
    May 4th, 2010 at 18:07 | #31
    Reply Quote

    物语哲言 :
    我的空间不支持twip3,只支持twip2。怎么弄

    可参考这篇文章http://4zai.net/137

    请问你用的是什么空间啊?~我连支持twip2的都没找到

  32. weather8620
    May 4th, 2010 at 19:42 | #32
    Reply Quote

    http://u.ntes.in/callback.php?oauth_token=0LqrQUyM2SGNzkb2zD6GnbKnqg0SuKuwKAf1M&oauth_verifier=SCCGK5DCfeKRjkA7qEoNKglY90VOps3osX82VANSP0

    一点那个 Sign in with Twitter 就跳到这里来了。

    都没有调用其 TWITTER 那个出来。

  33. flyingkk
    May 4th, 2010 at 20:54 | #33
    Reply Quote

    在浏览器里使用正常,可以用test看到推,但输入到客户端没反应。空间用的是http://4zai.net/137中作者写的那个。

  34. Sphinx
    May 4th, 2010 at 21:16 | #34
    Reply Quote

    flyingkk :
    在浏览器里使用正常,可以用test看到推,但输入到客户端没反应。空间用的是http://4zai.net/137中作者写的那个。

    望LS继续折腾后分享经验~俺现在头都晕鸟

  35. May 4th, 2010 at 22:38 | #35
    Reply Quote

    @all
    经验证原来oauth_config.php里的KEY和SECRET已经失效,请自行到twitter申请新的app并将对应的KEY和SECRET填入文件内。使用原来的KEY和SECRET将无法连接到Twitter,返回”Could not connect to Twitter.”

  36. May 4th, 2010 at 22:42 | #36
    Reply Quote

    @weather8620
    这个是因为你的浏览器里已经默认保存了twitter的登陆信息,你看到的输入密码的界面实际是从twitter返回之后输入api密码的地方。

    @flyingkk
    是twip3.0吗?确认输入客户端的地址、用户名、密码(是api密码)是否正确。

  37. kajisan
    May 4th, 2010 at 23:01 | #37
    Reply Quote

    折腾好了。。但是发现twidroid 跟seesmic 都不支持oauth…..我折腾是为个啥啊

  38. May 4th, 2010 at 23:05 | #38
    Reply Quote

    @kajisan
    :!: 你还没明白twip3的工作原理。目前的情况是,twip3使用OAuth跟twitter交换数据,而使用Basic auth来跟客户端交换数据,所以对客户端来说,仍然是basic auth的方式。如果客户端支持并启用OAuth,例如Gravity,twip3是无法工作的。

  39. kajisan
    May 4th, 2010 at 23:26 | #39
    Reply Quote

    那我通过web用username 跟api password 可以获得timeline
    但twdroid 跟seesmic 均无法成功连接。。这又是什么错啊。。

  40. ray
    May 5th, 2010 at 00:05 | #40
    Reply Quote

    现在就缺一个freehost可以通过access token……唉

  41. kajisan
    May 5th, 2010 at 00:32 | #41
    Reply Quote

    已经成功搞定。。重新设置api密码为twitter密码后依然无法。。

    仔细看配置。。然后发现是oauth的路径估计有些问题。。应该是需要个服务器路径。
    于是ssh上去之后pwd了一下。拷贝路径过来。解决。。

  42. Sphinx
    May 5th, 2010 at 00:57 | #42
    Reply Quote

    Not Found

    The requested URL /twip/oauth.php was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
    Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 PHP/5.3.2 Server at dwe126.melgurt.com Port 80

    在授权界面点击Allow之后出现这个提示~怎么解决?

  43. @yueerfei
    May 5th, 2010 at 10:17 | #43
    Reply Quote

    @Bronco
    Bronco,目前的代码修改后是否可以用于byethost这样的免费空间呢?

  44. Roy
    May 5th, 2010 at 10:33 | #44
    Reply Quote

    用了OAuth后,还可以多个账户都通过这个方式中转么?还是只能一个人用这个twip api了?

  45. May 5th, 2010 at 13:49 | #45
    Reply Quote

    @kajisan 可能是把gzip压缩启用了,关掉它

  46. May 5th, 2010 at 13:58 | #46
    Reply Quote

    我建的几乎都成了,allow回来后输入自己密码无法显示最近的几天推,自己用客户端也不行。请问怎样解决,是空间的问题吗?我空间装twip2成。谢谢 :smile:

  47. kh9n
    May 5th, 2010 at 14:58 | #47
    Reply Quote

    我按照这个文档建好了,但是有一个问题:
    1。当我从twidroid里面链接api的时候提示我twitter不能给我的账号授权
    2。在通过web访问我的api的login.php的时候浏览器会弹出登录对话框,内容类似于“A username and password are being requested by http://myapihostserver. The site says: “Twip login””,这个时候无论输入推特账号密码还是api密码都无法登录,甚至输入我在空间注册的账号密码也不行。

    但是访问index.php则可以显示最近的五个消息,同时尝试“/statuses/public_timeline.xml”也可以读取到正确的xml,请问一下博主,我这个是什么情况?谢谢了。

  48. kh9n
    May 5th, 2010 at 15:02 | #48
    Reply Quote

    从twidroid里面出来的出错消息:could not authenticate you. Maybe your login information is incorrect or your account is locked after too many failed attempts to sign in. Please chillax for a few, then try again.

  49. kh9n
    May 5th, 2010 at 15:40 | #49
    Reply Quote

    直接连接login.php弹出的对话框信息:Twip login上的 mytwiphoster:80 服务器要求提供用户名和密码。

  50. May 5th, 2010 at 16:34 | #50
    Reply Quote

    这个坚决支持,学习。

  51. weather8620
    May 5th, 2010 at 17:01 | #51
    Reply Quote

    救命

    http://u.ntes.in/twip/index.php

    谁帮我测试下。 为什么到了最后一步。 输入了两次 api 密码。 loadin。。 然后就failed

  52. Roy
    May 5th, 2010 at 17:09 | #52
    Reply Quote

    是不是开了oauth以后basicauth就没法用了?

  53. weather8620
    May 5th, 2010 at 17:19 | #53
    Reply Quote

    199.71.215.14 – - [05/May/2010:02:17:36 -0700] “GET /statuses/friends_timeline.json?count=5 HTTP/1.1″ 404 505 “http://u.ntes.in/index.php” “Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3″ |

    悲剧的 404

  54. tianchaoren
    May 5th, 2010 at 17:23 | #54
    Reply Quote

    希望能出个gae版本的。现在的免费php空间难找而且大部分都不支持curl

  55. 四仔
    May 5th, 2010 at 18:28 | #55
    Reply Quote

    其实我想问twip2.2和3.0的区别是什么呢,同样是oauth呢~

  56. May 5th, 2010 at 19:00 | #56
    Reply Quote

    @四仔
    架构的改变吧~功能上似乎差不多。不过2.2有个安全问题,当A通过OAuth取得token存入服务器后,B有可能使用A的token来发送消息。这个在3.0里进行了修正,token是加密的,前提是空间要支持mcrypt库。

    @tianchaoren
    python和java都不是很熟,心有余而力不足诶~~不过似乎有基于java版的类似twip的东西。

    @Roy
    7月底吧记忆中,关闭之后basic auth无法从官方获取数据了。

    @kh9n
    既然能获得public_timeline,就表明至少OAuth的部分应该没什么问题了。可以考虑换个桌面版的客户端试试看。

    @fanzheng
    注意区分一下api密码和twitter密码。你也可以检查oauth目录看看有没有对应的.oauth文件生成。

    @Roy
    可以多人共用,每个人都使用自己的username和api密码来进行验证。

    @@yueerfei
    目前不能。

  57. 四仔
    May 5th, 2010 at 19:10 | #57
    Reply Quote

    @Bronco
    嗯,twip3.0应该还是比2.2好的。既然有3.0我就不用2.2的那个了。
    顺便也在我那篇文章加了个link过来了。。

  58. 物语哲言
    May 5th, 2010 at 19:17 | #58
    Reply Quote

    不少空间不支持3.0,这也是问题@四仔

  59. kh9n
    May 5th, 2010 at 19:39 | #59
    Reply Quote

    多看了一下发现,只要我clear session,之后就无法获得public_timeline了。需要登录。而登录界面正如我描述的,始终无法登录,一直弹登录窗口。

  60. kh9n
    May 5th, 2010 at 19:45 | #60
    Reply Quote

    我跟查了一下源代码。。发现在dorequest(){…}函数中,$this->username获得的是空,所以虽然我的.oauth文件存在,但是在执行
    if( !file_exists( OAUTH_DIR.$this->username.’.oauth’ )) {
    header(“HTTP/1.1 403 Forbidden”);
    exit();
    }
    的时候会出错。
    另外,我把twip放在根目录下”/”,在pre_request(){…}里面,这句话是不是有问题?
    if(strlen($this->webroot) == 0){//use “/” as webroot
    $this->request_api = strval(substr($_SERVER['REQUEST_URI'],1));
    我觉得应该是
    if(strlen($this->webroot) == 0){//use “/” as webroot
    $this->request_api = strval(substr($_SERVER['REQUEST_URI'],0));
    否则$this->request_api会获取失败。。
    请指教。。。

  61. kh9n
    May 5th, 2010 at 19:48 | #61
    Reply Quote

    不知道是不是我空间配置或者空间自身的问题。。我用的是http://x10hosting.com的免费空间。

  62. May 5th, 2010 at 20:35 | #62
    Reply Quote

    @kh9n
    原来那样写是对的,需要去掉第一个”/”。至于x10hosting,很遗憾,似乎他们家的主机的mod_rewrite有问题,之前我也尝试过,总是获取不到用户名和密码。在支持论坛上发了帖子也没人理…… :!:

  63. mytion
    May 5th, 2010 at 21:10 | #63
    Reply Quote

    好教程,要是再配个图就更棒啦!原来我一直没有建立一个OAuth的文件夹(这个文件夹建在不能被用户直接访问到的位置,即博主提到的public_html(www)目录的上一级),所以导致失败。另外在oauth_config.php这个文件的变量OAUTH_DIR的路径必须和OAuth的这个文件夹的路径一致。

  64. kh9n
    May 6th, 2010 at 00:27 | #64
    Reply Quote

    @Bronco
    谢谢回复。。再另外一个免费空间上搭好了。确实可以用。非常赞。谢谢你的工作以及分享。

  65. Sphinx
    May 6th, 2010 at 00:54 | #65
    Reply Quote

    @kh9n
    请问你用的是什么免费空间啊?

  66. @granvals
    May 6th, 2010 at 08:48 | #66
    Reply Quote

    我的都搭建成功了,最后的timeline也出现了,可是我把api地址键入gravity的时候出现了api上限,这是什么问题啊?

  67. kh9n
    May 6th, 2010 at 10:39 | #67
    Reply Quote

    @Sphinx 我是在 http://www.host1free.com/ 上申请的免费空间。我在手机上面访问速度还可以接受。移动GPRS。

  68. kh9n
    May 6th, 2010 at 11:09 | #68
    Reply Quote

    见鬼了。。这里会自动删除comments么。。还是因为我写了url进来?
    @Sphinx 我用的是host1free提供的免费空间,有什么问题可以在推上问我 @kh9n

  69. May 6th, 2010 at 14:51 | #69
    Reply Quote

    Gravity现在已经可以自动获得access token
    用Gravity的用户不用担心7月的来临,哈哈 :mrgreen:

  70. weather8620
    May 6th, 2010 at 14:56 | #70
    Reply Quote

    lz 你好。 你的 打包文件缺乏 .htacess 文件 赶紧补上吧。

    cat .htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

  71. weather8620
    May 6th, 2010 at 15:47 | #71
    Reply Quote

    楼主 能不能抽空 改下代码 支持 140 自动截断?

  72. jixi
    May 6th, 2010 at 18:09 | #72
    Reply Quote

    请问现在支持gzip压缩 不?

  73. May 6th, 2010 at 18:57 | #73
    Reply Quote

    @kh9n
    被akismet认定为spam了…..

    @Qing
    嗯,Gravity还是很不错的,但只能在Symbian上用啊~

    @weather8620
    我的zip压缩包里有.htaccess啊~~140截断有空再改吧。

    @jixi
    twip一直都支持gzip压缩啊~只是貌似跟Gravity配合得不太好,原因未知… :!:

    @@granvals
    估计是同一个IP上的twip太多了 :smile:

  74. Sphinx
    May 6th, 2010 at 19:31 | #74
    Reply Quote

    @kh9n
    谢了~已经搞定了,呵呵~

  75. tianchaoren
    May 6th, 2010 at 21:24 | #75
    Reply Quote

    博主有gt什么的可以联系么?
    我建的api在浏览器上一切正常,但是在手机上无法使用。我登陆ftp发现oauth那个目录是空的。不知道问题出在哪里。

  76. May 6th, 2010 at 23:14 | #76
    Reply Quote

    @tianchaoren
    检查一下oauth_dir的配置是否正确,对应文件夹是否具有写权限。

  77. 三叶草
    May 7th, 2010 at 19:29 | #77
    Reply Quote

    点击”Sign in with Twitter”之后出现设置密码的页面 点击保持后出现以下提示 请问怎么解决?

    Warning: file_put_contents(/domains/hsgj01427.kuheo.com/hsgj01427.oauth) [function.file-put-contents]: failed to open stream: No such file or directory in /home/hsgj01/domains/hsgj01427.kuheo.com/public_html/savetoken.php on line 30

    Warning: Cannot modify header information – headers already sent by (output started at /home/hsgj01/domains/hsgj01427.kuheo.com/public_html/savetoken.php:30) in /home/hsgj01/domains/hsgj01427.kuheo.com/public_html/savetoken.php on line 32

  78. May 8th, 2010 at 23:15 | #78
    Reply Quote

    @三叶草
    看起来似乎是oauth目录设置得不对,有些主机会把路径截断,所以你需要确实一下oauth文件夹的“可访问”路径,也就是通过php可以访问得到的路径。另外一点是可能权限设置得不对,最简单的方法是设置为777.

  79. May 9th, 2010 at 00:57 | #79
    Reply Quote

    感谢你提供的程序和说明,我已经架设成功^^
    twip3.0+gravity在开启压缩时会无法使用,你提供的程序也存在这个问题,可以参照这一ISSUE来解决,将twip.php第186行的header注释掉,如果认为妥当建议更新源代码。

  80. Sphinx
    May 9th, 2010 at 04:04 | #80
    Reply Quote

    @Diky
    请问LS用的是哪个空间?付费的还是免费的?~

  81. May 9th, 2010 at 08:38 | #81
    Reply Quote

    @Sphinx
    付费空间…

  82. May 9th, 2010 at 08:57 | #82
    Reply Quote

    @Diky
    已经修正源代码,感谢! ;-)

  83. May 9th, 2010 at 10:26 | #83
    Reply Quote

    @mytion
    请问我的oauth目录一直是空的是什么原因啊?我放在上以及上一级目录了,config里面是不是填写 类似 /home/dning1/oauth 这样的啊?

  84. May 9th, 2010 at 10:33 | #84
    Reply Quote

    我的现在在web页面可以访问到最新的5条推,但是电脑客户端无法登陆,gravity总是提示“api达到上限”,这是什么原因? 求楼主指导~~

  85. May 9th, 2010 at 10:36 | #85
    Reply Quote

    对了,phpinfo显示 _SERVER["DOCUMENT_ROOT"]为/home/dning1/public_html 上一级目录的oauth文件夹权限已经设置为777了。。

  86. LUCYFOUR
    May 9th, 2010 at 12:30 | #86
    Reply Quote

    @三叶草
    我也在这步出现这些。
    我用bluehost的共享主机,只有FTP,我自己无法访问到我域名文件夹的上级目录的,能不能把oauth文件夹放在twip文件夹的上一级目录呢?

  87. May 9th, 2010 at 19:30 | #87
    Reply Quote

    @dning1
    你在web页面点击”clean session”之后再点击”show your timeline”看看能不能看到推。因为如果oauth文件没有生成成功的话客户端是没办法用的。而网页是因为从twitter返回后token存在session里了。

    @LUCYFOUR
    理论上把oauth文件夹放在哪里都是可以的。推荐放在域名文件夹上一层主要是考虑安全性,让网页访问者无法获得oauth文件。

  88. May 9th, 2010 at 19:41 | #88
    Reply Quote

    果然没法生成啊。。。是不是主机的缘故?我的是uhosting。。。

  89. May 9th, 2010 at 22:29 | #89
    Reply Quote

    @dning1
    oauth_config.php里oauth_dir要以”/”结尾。如果还是不行的话有可能是主机的问题了。uhosting没用过,不好说。

  90. byelims
    May 10th, 2010 at 00:14 | #90
    Reply Quote

    请教博主,我在一个空间上尝试搭建了一个,现在的状况是OAuth文件夹下成功写入了文件,也没有报错,但是最后测试Timeline的时候总显示Failed,问题可能出在哪儿呢?感谢~

  91. May 10th, 2010 at 21:04 | #91
    Reply Quote

    呃,我在hoat1free搭建的rupai.net域名验证后输入API密码后显示:

    Warning: file_put_contents(OAUTH_DIRdning1.oauth) [function.file-put-contents]: failed to open stream: Permission denied in /home/dning/domains/dning.rupai.net/public_html/t/savetoken.php on line 30

    Warning: Cannot modify header information – headers already sent by (output started at /home/dning/domains/dning.rupai.net/public_html/t/savetoken.php:30) in /home/dning/domains/dning.rupai.net/public_html/t/savetoken.php on line 32

    这是什么原因呢?

    而且返回后可以显示推,但还是没有oauth文件生成,oauth_dir目录是以 / 结尾的。。

  92. soho
    May 11th, 2010 at 09:57 | #92
    Reply Quote

    byelims May 10th, 2010 at 00:14 | #90 请教博主,我在一个空间上尝试搭建了一个,现在的状况是OAuth文件夹下成功写入了文件,也没有报错,但是最后测试Timeline的时候总显示Failed,问题可能出在哪儿呢?感谢~

    同问!

  93. May 11th, 2010 at 13:08 | #93
    Reply Quote

    @dning1
    文件夹权限的问题。把oauth文件夹的权限设置为777。

    @soho
    @byelims
    可以尝试直接在浏览器中输入“你的api地址”/statuses/public_timeline.xml,如果API正常,会返回xml格式的最新的推。如果问题出在 Twitter服务端,也会返回相应的错误信息。多次尝试通过API来获取数据并且验证失败的话,账户会被锁定一段时间的。

  94. May 11th, 2010 at 13:11 | #94
    Reply Quote

    今天搭建成功啦,uhosting的主机,只改oauth_dir,key,secret,callback.php地址,建立oauth文件夹修改权限直接上传就行了~~~~

    我之前把文件夹名改成 “t”,修改了twip和index两个文件汇总的目录,结果就不能保存oauth文件了,请问有办法让他处于“t”文件夹下吗?

  95. xxxx
    May 11th, 2010 at 16:05 | #95
    Reply Quote

    不小心把oauth文件中的文件删除了,无论我怎么操作都再也保存不了那个文件 了,怎么办啦

  96. tianchaoren
    May 12th, 2010 at 18:50 | #96
    Reply Quote

    使用gzip后gravity无法使用没显示内容但是有流量消耗。

  97. darky
    May 13th, 2010 at 07:13 | #97
    Reply Quote

    请问 启用了”PRIVATE_API”选项 ,修改哪里开启?

  98. darky
    May 13th, 2010 at 07:15 | #98
    Reply Quote

    @三叶草
    config里的OAUTH_DIR改为/home/hsgj01/domains/hsgj01427.kuheo.com/oauth/ 路径
    777权

  99. wearelu
    May 13th, 2010 at 16:59 | #99
    Reply Quote

    @mytion
    不好意思很才的问一下怎样“在oauth——config.php里面表示public_html(www)目录的上一级?”我已经在这一级建了oauth文件夹,777权限。可是不知道在oauth——dir后面怎么表示,谢谢帮助。

  100. Syringa
    May 13th, 2010 at 20:41 | #100
    Reply Quote

    囧。用uhosting.org搭建的twip在网页段成功生成了token,但用在gravity上一直显示api到达上限。求帮助。

  101. May 14th, 2010 at 12:13 | #101
    Reply Quote

    @Syringa
    检查oauth文件夹里是否有.oauth文件,有的话可能是同一ip请求次数过多,可以等一段时间再试。

    @darky
    index.php里的”private_api”设为true,把自己的用户名放到”allowed_users”里。

    @tianchaoren
    有什么提示么?有些主机会打开全局gzip压缩,这个时候twip的”docompress”不能设为true。

    @xxxx
    既然能生成,在配置没更改的前提下肯定可以再次生成的。

  102. tianchaoren
    May 14th, 2010 at 12:18 | #102
    Reply Quote

    没什么特别的提示,看起来一切正常。而且打开gzip只是在gravity里面不正常,在电脑端和手机端的twibble却可以正常使用。可是我很少听别人说打开gzip后gravity不能用。是dreamhost的合租空间。不打开gzip流量很大,打开了gzip后api又与gravity无缘:(

  103. May 14th, 2010 at 12:27 | #103
    Reply Quote

    @tianchaoren
    dreamhost是全局打开gzip的,twip把docompress设置false,Gravity把use zlib comp设为yes就行了。我用的也是dh的空间,这样设置可以用,数据已经压缩了。另外,gravity上如果有关于gzip的错误会提示网络错误-36。

  104. tianchaoren
    May 14th, 2010 at 16:33 | #104
    Reply Quote

    “dreamhost是全局打开gzip的,twip把docompress设置false,Gravity把use zlib comp设为yes就行了。我用的也是dh的空间,这样设置可以用,数据已经压缩了。”
    这个确实是这样。谢谢。
    还有一个问题我一直想不通。我想使用ssl加密的api,但是代价太大(独立IP加SSL证书一年的花费很大)。而基于gae的appspot的api可以使用appspot自带的ssl加密。所以我修改基于appspot的api的代码指向,把twitter.com改成dreamhost上支持oauth的api地址但是却无法使用。
    你能不能试试我这个想法是否可行,如果不能,有可能是什么原因呢?
    PS:基于gae的api有几个,使用gtap代码简单易于修改. http://code.google.com/p/gtap/

  105. May 16th, 2010 at 16:22 | #105
    Reply Quote

    @tianchaoren
    在GAE上安装了个支持 oauth的API,安装方法: http://timewilltell.me/2010/05/gaes-api-methods-built-oauth.html 我的API地址 https://heyfanzhg.appspot.com/ 这个是 from 推神 :razz:

  106. soho
    May 18th, 2010 at 09:44 | #106
    Reply Quote

    打开首页出错
    Warning: session_start() [function.session-start]: open(/tmp/sess_2fb2df2cf91131d50fa8f9f55eb7df89, O_RDWR) failed: Permission denied (13) in /home/XXX/public_html/twip3/twip.php on line 25

    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/XXX/public_html/twip3/twip.php:25) in /home/XXX/public_html/twip3/twip.php on line 25

    Welcome to Twip.

  107. May 18th, 2010 at 17:03 | #107
    Reply Quote

    晕 刚看到

    别把ff放上去,记得删掉 还有这条留言

  108. May 18th, 2010 at 18:42 | #108
    Reply Quote

    @Bronco
    test.php获取5推出错更好的排障方法是同时加载工作正常的api所获取的/statuses/public_timeline.xml和自己所获取的相同页面,然后比对一下看看有没有差异。

    BTW,发现Godaddy的免费主机可以正常搭建奶瓶腿客户端,但注册页面验证码显示不出来。用twip 3能在指定目录正常生成.oauth文件,然后用客户端可以正常登录,但不显示新推也不能发推。通过刚刚的方法查看了一下,果然是输出的xml文件由于被godaddy插入广告代码使得xml出错导致。。FML

    但不过还好twip还能用来直接按ID看推,算是发挥一点余热吧.. http://sharling.info/sharling

  109. May 18th, 2010 at 18:43 | #109
    Reply Quote
  110. May 18th, 2010 at 21:18 | #110
    Reply Quote

    @sharling
    免费空间确实比较讨厌……

    @Showfom
    改掉了,话说你直接在推上@我不就好了… :!:

    @soho
    空间对session支持有问题。收费主机的话提交给客服处理。

  111. May 19th, 2010 at 01:26 | #111
    Reply Quote

    屏蔽了Twitter的免费虚拟主机可以使用自己的顶级域名A记录指向Twitter,这样就可以绕过屏蔽域名。已经在byethost的主机上实验成功。OAuth验证成功后弄个二级域名指向twitter就可以了。不过这样做之后就不能再继续验证OAuth,只能继续使用原来已经注册的Oauth。 #twip

  112. May 19th, 2010 at 09:43 | #112
    Reply Quote

    http_code 401表示key和secret失效?请问这个怎么解决?

  113. May 19th, 2010 at 10:57 | #113
    Reply Quote

    我想问问 000webhost 支持不支持twip3

  114. May 19th, 2010 at 13:04 | #114
    Reply Quote

    @pipitu
    更换key和secret。若app被锁联系twitter。

    @blambin
    空间支持基本的session、mod_rewrite就ok的吧~屏蔽了twitter也可以通过域名转向来搞定。

  115. darasion
    May 19th, 2010 at 15:19 | #115
    Reply Quote

    @blambin
    看这里挺火爆的,我来凑个热闹,000webhost 好像不支持 .htaccess 的,搭了也没用,除非客户端支持非标准api url的。
    :arrow:

  116. redicaps
    May 20th, 2010 at 11:28 | #116
    Reply Quote

    原来不能用email登陆,让我昨天调试了半天…
    对twitter的api没有研究
    能够改变oauth文件的命名方式,使用登录方式而不是Screename来命名么?

  117. May 21st, 2010 at 17:44 | #117
    Reply Quote

    @darasion
    可以了已经 支持 .htaccess 的

  118. jukin
    May 21st, 2010 at 20:22 | #118
    Reply Quote

    byehost的主机不支持,早知道我就不浪费人家资源给申请了。为何楼主要加删除线???

  119. May 22nd, 2010 at 01:05 | #119
    Reply Quote

    nginx做的反向代理api在6月30号之后也会失效吗?
    我用twip在自己的VPS(nginx的)上面做,老是failed……无奈了
    如果反向代理还是可用的话那么就不准备折腾了……

  120. hmily
    May 23rd, 2010 at 13:09 | #120
    Reply Quote

    老大,我发现访问“api地址/statuses/public_timeline.xml”地址的时候,返回的是404页面,这是咋回事呢?

  121. May 23rd, 2010 at 20:53 | #121
    Reply Quote

    @jukin
    byehost可以通过使用域名A记录的方法来使用。具体可以去搜一下,在opda里有相关的教程。

    @camus
    反向代理应该是没什么问题的。

  122. ningye
    May 24th, 2010 at 13:08 | #122
    Reply Quote

    000webhost.com通过使用域名A记录的方法使用后,API密码保存,可是就是无法获取,郁闷.

  123. faint
    May 26th, 2010 at 12:53 | #123
    Reply Quote

    找了一个免费的空间,感觉很棒,但是有广告代码阻碍tweets显示
    请问有什么办法解决吗

  124. June 2nd, 2010 at 16:18 | #124
    Reply Quote

    同楼上,访问“api地址/statuses/public_timeline.xml”地址的时候,返回的是404页面

    用的是nginx,是不是要配置什么呢

  125. June 13th, 2010 at 12:17 | #125
    Reply Quote

    楼主,按照你说的已经架设好了,我的是付费空间。
    oauth目录下的xxx.oauth也生成了,但是每次点击sign in with twitter 在Save your OAuth token页面 输入2次API密码,就返回到Welcome to Twip页面,最后一行报Failed! 错误。 能分析下大概问题出在哪里吗? 地址 http://is.gd/cNjK0

  126. June 13th, 2010 at 22:13 | #126
    Reply Quote

    @minkaka
    返回之后可以点击”clean session”之后再点击”show your timeline”看看,或者在地址栏输入”api地址/statuses/public_timeline.xml”看看结果。

    @sun
    nginx依照.htaccess来配置服务器。

    @faint
    广告代码需要自己写代码来去掉,且有被关闭账户的可能。

  127. June 13th, 2010 at 23:36 | #127
    Reply Quote

    @minkaka
    返回之后可以点击”clean session”之后再点击”show your timeline”看看,或者在地址栏输入”api地址/statuses/public_timeline.xml”看看结果。
    ————————————————————————–
    点击 show your timeline 要我输入密码,究竟是什么用户名和密码啊,TWITTER帐户密码?前面设置的API密码?还是空间密码?FTp密码? ; twip目录下根本就没有/statuses/目录啊,更没有public_timeline.xml 文件~~~ 拜托帮忙看看。我在t上也给你留言了

  128. June 17th, 2010 at 09:09 | #128
    Reply Quote

    @@minkaka
    建议先仔细阅读相关的说明和教程。

  129. 31313
    June 23rd, 2010 at 14:21 | #129
    Reply Quote

    我的问题是
    gravity上除了搜索和趋势,都正常!
    为什么搜索没法用

  130. 刘德华
    June 23rd, 2010 at 21:03 | #130
    Reply Quote

    问个问题!6月30日后
    如果自建具有安全验证OAuth的api+6375
    应该还可以使用gravity吧?(也就是说twiter网站的改动不会对twip3与客户端的明码验证产生影响吧?)

    还有原作者架设的服务器不是用twip3吗?
    难道原作者的服务器可以两边(一边是twitter,另一边是客户端gravity)都支持验证OAuth?

    还有就是,目前最新的破解版本,没有输入自建api的位置了,通过什么办法可以继续使用自建api

    这几个问题困扰我很久了!望回答,谢谢!

  131. saraka
    June 29th, 2010 at 09:37 | #131
    Reply Quote

    @Bronco
    能不能直接给个链接,我隐藏路径转发然后还是显示连接不到twitter

  132. July 1st, 2010 at 17:06 | #132
    Reply Quote

    打开twip主页后出现

    Warning: require_once(include/twitteroauth.php) [function.require-once]: failed to open stream: Permission denied in /home/dofinein/public_html/twip/callback.php  on line 10
    
    Fatal error: require_once() [function.require]: Failed opening required 'include/twitteroauth.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/dofinein/public_html/twip/callback.php on line 10

    请问是不是主机的问题?

  133. July 24th, 2010 at 15:59 | #133
    Reply Quote

    你好,博主,请教下. 我是在我自己的vps上搭建的twip, 点击Sign in Twitter 验证成功后,跳转到输入token access 密码,输入完跳转回主页,没有看到time_line 出现,只有一个 Fail , 但是保存oauth 信息的文件也已经正常的生成了。

    还有我在api后面加上statuses/public_timeline.xml 出现404错误 。

    请问我改怎么办呢?

  134. July 26th, 2010 at 20:56 | #134
    Reply Quote

    @刘德华
    6375版的可以用的,Gravity的作者用的应该不是twip而是他自己写的代理,因为只提供给Gravity自己用,所以接口可以随意设计。新版的Gravity不支持自定义api,要么等新版,要么降级。实在想用新版的可以建立一个statusnet类型的账号,只是这种方式不支持官方RT以及list,也无法推图。

    @saraka
    具体地址我这里也没有……

    @dofine
    看错误信息应该是权限设置的问题。

    @kun
    404错误的话检查webroot是否设置正确,.htaccess是否存在且正确。非Apache服务器的话需要自己实现rewrite。

  135. July 26th, 2010 at 23:02 | #135
    Reply Quote

    感谢。。已经解决了,是apache 忘了加载mod_rewrite 模块了。

  136. 刘德华
    August 3rd, 2010 at 18:22 | #136
    Reply Quote

    谢了!继续twitter

  137. August 11th, 2010 at 19:12 | #137
    Reply Quote

    这个真是不容易啊,复杂

  138. Lionel
    August 20th, 2010 at 14:35 | #138
    Reply Quote

    @Bronco 你好,我在dh的空间(api.8cmblue.tk)上搭建了Twip3.1,oauth文件夹里也生成了.oauth文件了,权限也设置为了777,但就是一直显示“Fail”。含泪求指教。 :cry:

  139. Lionel
    August 21st, 2010 at 12:55 | #139
    Reply Quote

    搞定了,用二级域名直接访问API时,webroot需要设置为“/”。

  140. August 22nd, 2010 at 15:33 | #140
    Reply Quote

    啊哦!这个我抽时间试试!

  141. August 26th, 2010 at 01:19 | #141
    Reply Quote

    悲剧,最后一步输入API密码后,提示

    Warning: file_put_contents(/home/user/oauth/gaochuyu.oauth) [function.file-put-contents]: failed to open stream: No such file or directory in /home/content/g/a/o/gaochuyu/html/t/api/savetoken.php on line 30

    Warning: Cannot modify header information – headers already sent by (output started at /home/content/g/a/o/gaochuyu/html/t/api/savetoken.php:30) in /home/content/g/a/o/gaochuyu/html/t/api/savetoken.php on line 32

    求解

  142. September 1st, 2010 at 16:42 | #142
    Reply Quote

    通过web访问已经可以得到tweet了,而且connection页面也有授权了,但是在twhirl中用api的方式却无法操作。btw:twhirl中api访问的形式是 用户名为name@apiaddress的形式l.ca帐号是不是因为这个问题?

  143. 良柄
    September 1st, 2010 at 22:24 | #143
    Reply Quote

    我到倒数第二步的时候,没有出现到官网的认证,而是直接跳转到设置密码页面了,这是怎么回事?而且这里设置密码完成之后跳转回Twip页面,每次都显示Failed,晕死~折腾一宿了还是搞不定,太郁闷了

  144. September 1st, 2010 at 23:52 | #144
    Reply Quote

    哈哈,看完文章,看到域名才知道是你~~ :grin:

  145. September 2nd, 2010 at 09:28 | #145
    Reply Quote

    @良柄
    没有官网验证是因为之前曾经登陆过,并且做过了允许操作。至于显示Fail,先看有没有oauth文件,再通过网址的形式检查api是否工作正常。具体方法之前的评论中有。

    @Jutoy
    嘿嘿~~ :cool:

  146. December 27th, 2010 at 16:38 | #146
    Reply Quote

    博主,好久没更新了

  147. January 5th, 2011 at 09:31 | #147
    Reply Quote

    博主,N久没更新了哦!~~

  148. January 27th, 2011 at 13:46 | #148
    Reply Quote

    博主好久没更新了吧!~~~~

  149. March 14th, 2011 at 16:11 | #149
    Reply Quote

    好多人哦……博主去哪了呢

  150. March 21st, 2011 at 13:26 | #150
    Reply Quote

    博主人气好旺哦,你还不快带那更新啊。。。

  151. March 27th, 2011 at 01:06 | #151
    Reply Quote

    非常好的博客 过来跟博主学习了

  152. March 27th, 2011 at 16:24 | #152
    Reply Quote

    我记得我见过这个主题
    很不错的主题 银河的

  153. WILDEN气动隔膜泵
    April 15th, 2011 at 13:51 | #153
    Reply Quote

    我说难怪这么多人,原来已经快一年了的文章呀。博主你看看这么多人来支持你,你也不出来……

  1. [...] http://heybronco.net/tech/twitter/the-twip-support-oauth/ 本人淘宝店提供的DREAMHOST [...]

  2. [...] 支持OAuth的Twip – 信马由缰 (tags: OAuth TwitterTools) [...]

  3. [...] 凡是GFW禁止的,我就有尝试的兴趣。所以最近就一直尝试搭建自己的twitter api proxy。proxy程序有基于Google App Engine的birdnest,基于PHP的twip。 [...]

  4. May 26th, 2010 at 00:25 | #6

    [...] 五月 26, 2010 作者为 xijie 作者:Bronco  来源:http://heybronco.net/tech/twitter/the-twip-support-oauth/ [...]

  5. September 3rd, 2010 at 00:53 | #7

    [...] 支持OAuth的Twip [...]

  6. August 18th, 2011 at 20:18 | #8

    [...] address of this article is http://heybronco.net/tech/twitter/the-twip-support-oauth/.When you got this here have more than 30 comments. Why not come to check it [...]

Comments feed

office 2010 professional key

office 2010 key

free corel downloads

free corel downloads cracked

windows key

windows key

office 2010 free

office 2010 key

winrar password cracker serial

wirar password cracker

adobe free

adobe free

photo shop key

photo shop key

free winrar download for xp

download winrar for xp for free

key office 2010

office 2010 key

serial corel draw 11

serial corel draw 11 serials

serial winzip 11

serial winzip 11 key

cs5 serialz

cs5 serialz free

photoshop key

photoshop key

windows 7 key

windows 7 key

download photo shop free

photo shop serial

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

windows 7 free

windows 7 crack

free corel photoshop download

free corel photoshop download keygen

winrar 3 download

winrar 3 download freedownload