wp_sns_share更新至新浪API2.0,实现图片同步

7月 19th, 2012 1,998 留下评论 阅读评论

想实现新浪微博同步文章同步好久好久了,苦于在新浪API1.0下无论如何怎么尝试都行不通 :-D这篇博文中有介绍,半年前了),其实很早就想转到2.0版本的API,但是苦于2.0版本的应用必须填写一个固定的callback地址,而wordpress插件的性质决定callback的域名完全不一样,这看似无法实现,也就搁置了。最近收到新浪开发者邮件提示,9月份API1.0版本即将弃用,而且之前有网友提示有其他插件实现了图片同步这一功能,最近趁暑假有时间就来好好继续研究一番。

下了那个wordpress插件,叫social-medias-connect,的确是一款很强大的插件,不过某些功能要收费,而且表示在wordpress 3.3下chrome下无法进行sns授权绑定(授权的url被urlencoding了,算是bug吧)。看其源代码,果然是用了新浪API2.0版本的,然后就好奇它是如何越过callback设置的,原来利用了中间网页作二次跳转,即申请了一个SAE应用(xxx.sinaapp.com)。恍然大悟之后,模仿一下也申请了一个SAE服务,然后所有的授权登陆都在SAE的服务器上进行,然后根据url参数将授权后的access_token发回到wordpress博客中进行保存就好了。

然后聊聊新浪微博API2.0版本,对于1.0来说真的是有很大改进,特别是容易程度,在OAuth和调API方面都是。在OAuth上,省去了一个步骤而且再也不用计算复杂的签名了,只有授权后的一个code参数和再发一次HTTP POST请求后拿到的access_token参数即可,太方便了。而在调用API上,也仅仅只要这个access_token和其他必须的参数即可,自己写代码是非常方便的事了,再也没有计算签名等复杂的工作,而且2.0版本的API加入了好多的新方法,虽然支持上传图片只需要url但却没有权限。然后就是简单的HTTP POST请求的代码了,很顺利地搞定了同步图片的功能,很开心 :mrgreen:

但是OAuth 2.0最大的不好处在于access_token是有有效期的,而且很短只有7-30天不等(根据应用的权限等级),这对于一次性的APP来说没有影响,但对于博客中插件来说却是比较致命的,等于说每过一个期限都要去重新登陆授权一下,挺麻烦的。

然后又去研究了下腾讯微博API,发现也更新了很多,而且也有了OAuth 2.0版本,但为了懒得改代码也绕开access_token有效期这个坏处,1.0照用而且有只需要传url就能上传图片的API,真棒,这个要赞一下 :idea: 。于是腾讯微博也搞定了同步图片的功能。

这次的wp_sns_share插件加强了除以上功能外,还有不少新功能和其他改进的地方,此外还想实现twitter的微博同步(也是之前一直没搞定的),新版本2.6的更新还要过一段时间,要测试一下access_token过期后的表现和功能,估计8月应该能更新出来 :)

Categories: Wordpress 标签:, , , ,
  1. Javeane | #沙发
    7月 22nd, 2012 19:27

    期待2.6,加油!

  2. 7月 20th, 2012 09:40

    access_token如果有有效期确实也太麻烦了啊。

    • 同无奈,只能尽量提高APP权限等级来延长有效期