标签:pecl

浏览模式: 标准 | 列表 | 图文
Oauth二三事

Oauth二三事

这两天在做微博同步,于是对于oauth又重新开始折腾了。其实在之前我也做过类似的笔记,例如这个 关于oauth的几篇文章 ,于是在做这个同步的时候也参考了这些其中的一两篇,比如老王的基于PECL OAuth打造微博应用,但由于我不想加载pecl的oauth库,所以就不能使用了。
于是我就根据官方的SDK进行了处理,但由于需要同时支持两个或更多微博,结果就造成了oauth类的冲突了。而事实上经过测试,还不能加载一个屏蔽一个,因为有些微博对oauth类中的部分做了修改。于是最后我采用了namespace来解决了这个问题。
因为这次我是把weibo的类库做了独立处理,但由于不是每一台服务器都支持5.3的namespace,也在犹豫是不是要重新修正oauth类,但这样之后,官方的SDK我就不能覆盖性的更新了。真纠结呀。
hightman也在重写类似的东西,大家都在重复造轮子,可是怎么办呢?官方万一更新SDK,添加了新接口,我们怎么办,虽然会有一些接口的URL提供我们调用,但总归是直接使用会更方便啦。随便说说而已,目前已经解决,实在吐血的情况下那我就是干脆自己学着新浪他们一样也提供接口。哈哈,做点无耻的事情。。。

关于oauth的几篇文章

关于oauth的几篇文章

本文只是一个收集的链接,关于oauth,可以去看一下wiki百科,对于PHP的oauth支持,可以看一下手册
国内很早就有不少网站支持oauth,只是更多的网站都没有做出此类开放的功能。不过,疯狂的时候来的总是那么突然(这让我想起在单位的年夜饭上,刚吃了一小时,突然副总说了一句,快乐的时光总是短暂的)。国内对Oauth的支持也就突然间的多了起来,可能,最让人记的清楚的还是新浪。但当时关于oauth的文章还不是特别多,只是在QQ开放oauth后,突然间文章就多了很多,理由是,QQ所支持的oauth协议居然是非标的。。。。

好吧,让我们看看其他人是怎么说的:

1、使用QOAuth来进行新浪/腾讯微博验证(一)

2、老王的:基于PECL OAuth打造微博应用

3、android下的:android开发我的新浪微博客户端-OAuth篇(2.1)

4、腾讯微博开放平台的PECL的OAuth封装

5、腾讯微博开放平台练手:微博擂台

6、使用 PECL 的 OAuth 库访问 QQ 微博 API

其中4、5、6都是mikespook写的,他说,QQ 微博的API里有点重要的事情,并列出来了。看例子:

<?php
include('define.php');
try {
$oauth = new OAuth(OAUTH_KEY, OAUTH_SECRET, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$oauth->enableDebug();
// 很重要!!!在 OAuth 标准里是没有规定 nonce 的长度的,但是 QQ 对 nonce 的长度做了要求——32 字节长。如果不设置一下,会返回 400 错误。我为此纠结了一天。
$oauth->setNonce(md5(rand()));
// CALLBACK 一定要设置,OAuth 扩展的文档上是没设置的,但是 QQ 这里不设会报错
$requestTokenInfo = $oauth->getRequestToken(REQUEST_TOKEN, CALLBACK);
$_SESSION['oauth_token_secret'] = $requestTokenInfo['oauth_token_secret'];
// header("Location: ……") 亦可
echo "<p><a href='" . AUTHORIZE . "?oauth_token=" . $requestTokenInfo['oauth_token'] . "'>authorize</a></p>";
} catch (OAuthException $e) {
var_dump($e);
}

callback.php

<?php
include('define.php');
try {
$oauth = new OAuth(OAUTH_KEY, OAUTH_SECRET, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$oauth->enableDebug();
// 很重要!!!如果不设置一下,会返回 401 错误。
$oauth->setNonce(md5(rand()));
$oauth->setToken($_GET['oauth_token'], $_SESSION['oauth_token_secret']);
$accessTokenInfo = $oauth->getAccessToken(ACCESS_TOKEN, null, $_GET['oauth_verifier']);
$_SESSION['access_token'] = $accessTokenInfo['oauth_token'];
$_SESSION['access_secret'] = $accessTokenInfo['oauth_token_secret'];
header('Location: room.php');
} catch (OAuthException $e) {
var_dump($e);
}
7、这是针对新浪微博的OAuth协议分析一

8、对新浪微博的OAUTH开发,居然还有一个总结:新浪微博OAuth认证总结

9、又是老王发的牢骚:OAuth那些事儿

好吧,就先列出这么多,真要查出oauth之类的东西,google随便一下就有很多,我贴出来的地址,都是我订阅的一些RSS的地址,也算是做一个集中罢了。