最近一个小项目需要整合Google 日历数据到公司的系统,因为产品前台是PHP的,所以考虑使用了Zend框架,也是Google平台官方推荐使用的PHP框架,功能强大,Zend的好处是你可以只需复制
你需要的功能扩展库,而不用把整个框架库都复制到你的系统中。
在使用Google的平台服务的时候,在验证这块碰到了
一些问题,google平台的用户验证
授权机制非常强大,用户验证,针对不同产品的授权,分别都有相应的处理,这也增加了系统整合的复杂度,好在google 关于验证和授权的帮助文档中提供了
例子,连接如下
测试页面 : http://googlecodesamples.com/hybrid/
源码: http://code.google.com/p/gdata-samples/source/browse/#svn%2Ftrunk%2Fhybrid
这个例子整合了OpenID和OAuth的使用,使用了几个扩展的库来发送和接收google的验证数据
,从封装OpenID
请求数据到转接到官方认证页面,在通过官方的RequestToken换取可长久使用的AccessToken, 代码里面都有明确
注释。
但是我在使用Zend_Gdata_Calendar来访问读取日历数据的时候
发现,Zend_Gdata接受的HttpClient对象和实例中封装的出来的无法通用,这就需要把实例中用来请求google服务的client对象转换成Zend_Gdata服务认识的,因为我需要使用AccessToken来做持久化访问,在查看文档的时候发现
/* Or, you could set an existing token (say one stored from your database). For HMAC-SHA1:
$accessToken = new Zend_Oauth_Token_Access();
$accessToken->setToken('1/AQfoI-qJDqkvvkf216Gc2g');
$accessToken->setTokenSecret('2c26GLW250tZiQ');
*/
链接如下
http://code.google.com/apis/gdata/docs/auth/oauth.html#OAuthUseAccessTokenPHP
不管你通过何种方法获取了AccessToken,你都可以轻松转换成Zend框架需要的google client对象来使用。
当然Zend中也有对OpenID和 OAuth的单独支持,但是整合的情况不适合Google Yahoo等新
版本的OpenID provider。 当然也许本人没有找到。
也有网友推荐使用下面的框架,因为需要使用Google的服务,我还是选择了Zend.
http://www.janrain.com/openid-enabled