IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP for Twitter OAuth 教学演示

Soulogic 2010-05-04 10:21:36 累计浏览 4,767 次
本机暂存

说来话长,两三年前只是想搞个 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. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,270)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,150)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,791)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  7. Redis消息队列的若干实现方式 (累计阅读 12,088)
  8. 到底什么是MVC? (累计阅读 11,870)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,709)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,488)