IT技术博客大学习 共学习 共进步

PHP for Twitter OAuth 教学演示

Soulogic 2010-05-04 10:21:36 浏览 4,643 次

说来话长,两三年前只是想搞个 Jabber 的 PHP Class,顺便就用上了 Livid 的 v2ex 的山寨 twitter,他起名叫 doing,我觉得这名字挺好,后来,鸭被墙了,我就琢磨着挪到 twitter 上,而且真倒了一部分数据,但我不用 twitter 的原因不是因为墙,是因为当时老看见鲸鱼,而且由于压力过大,twitter 关掉了一部分外围功能,其中就包括 GTalk 机器人,这搞得我严重不爽,因为我只用 GTalk 发,于是就自己写了一个自娱自乐了。地址是 http://plan.soulogic.com/(还有其他原因,如字数限制、以及我喜欢大量摘引一些文字,我希望有更明显的显示上的区分)

前几天在想,可以考虑做个同步,也不是很费事,一看文档,直接用 cURL 就可以发,但唯独一点不能容忍,就是发完后在 twitter.com 看到的附属信息结尾写的是“via API”,凭什么别人用的都是有名的我的就不行啊!看到 FAQ 才明白需要注册个 app,再通过 OAuth 发,才能显示 via app,于是这一天多的时间就耗在这上了。效果参见 http://twitter.com/soulogic/status/13261231824

其实麻烦就麻烦在搞明白整个过程,实现倒都很简单了,我是参考的 TwitterOAuth,把所有 cURL 过程和生成参数的过程输出到日志文件上,才算通了。

把这几行代码放上来的原因,就是为了帮别人更容易看明白整个交互过程,不用找一个完整实现再在所有地方下钩子。

还有个原因是,无论用谁的框架,都需要改一下把走代理加进去的……

把文档说明也放上来吧

点击这里下载代码 toauth.tar.gz


   PHP for Twitter OAuth 教学演示


注意:要求 PHP 版本 5.3 以上


如果你对 OAuth 还一无所知(就和我前天一样),
希望这份代码可以帮你更快的理解整个交互过程,而且也只是为了这个
如果要找一个完整实现,这个并不合适
可以考虑 http://github.com/abraham/twitteroauth 或者 Zend Framework

----------------------------------------------

首先确认你已经注册了 Application

注册地址 http://twitter.com/oauth_clients/new

你会得到 Consumer key 和 Consumer secret
把这两个字符串写到 common.inc.php 相应位置

顺便你还可以改下 callback 地址
这个地址只是引导用户访问,Twitter 并不直接访问你的 Web Server
所以在测试阶段直接用内网地址好了,这份代码暴露在公网是很危险的

对照 oauth.net 上的图

过程如下:

   1. 执行 1_start.php,得到 Request Token(步骤 A、B)
   2. 带着 Request Token 访问 twitter.com 上页面,得到用户确认
      并带着参数跳转到你指定的 2_callback.php 页面(步骤 B、C、D)
   3. 2_callback.php 发起请求,用 Request Token 换得 Access Token
      (步骤 E、F)
   4. 3_work.php 根据 Consumer key/secret 和 Access Token/secret 这四个参数
      以用户身份推一条消息(步骤 G)

整个 OAuth 的过程就是为了得到不同用户所相对应的 Access Token/secret
把这两个参数存起来后,就可以用 3_work.php 不断发了

建议继续学习

  1. Twitter/微博客的学习摘要 (阅读 12,082)
  2. 别得瑟了,你很可悲! (阅读 7,803)
  3. Twitter架构图(cache篇) (阅读 5,981)
  4. 基于PECL OAuth打造微博应用 (阅读 5,102)
  5. 深入理解OAuth与豆瓣OAuth test (阅读 4,945)
  6. 新浪微博OAuth认证流程分析 (阅读 4,922)
  7. 在sae中利用SaeFetchurl进行豆瓣的OAuth授权 (阅读 4,524)
  8. Twitter新员工的入职过程是怎样的? (阅读 4,480)
  9. OAuth那些事儿 (阅读 4,165)
  10. Twitter“鲸鱼”故障技术剖析 (阅读 4,002)