基于OAuth实现的Windows Live Writer新浪微博插件
写在前面的话
和很多朋友一样,我一直坚持写技术方面的博客,希望通过这样的方式,一方面沉淀自己的知识结构和心得体会,更希望也许能够在某些时候给其他一些朋友提供一些参考帮助。我自己这么多年的技术道路,每每遇到一些疑难杂症,也是习惯在网上搜索一下,很多时候都能找到解决方案。开发方面的中文社区,我觉得博客园是做得非常好的,我很喜欢这里的环境和氛围。
同时,今年以来,我也喜欢上了微博这种新的社交方式,通过简单的一两句话(140个字以内),可以和身边的朋友分享心情,确实很不错的。我自己是在新浪微博上面开通了帐号(@chenxizhang), 也玩得不亦乐乎,也欢迎大家关注我。
为什么设计这个插件
我自己有一个需求,就是希望我在博客园发布的博客,也同时发送一条微博到新浪,这样关注我的朋友们,也就知道我的一些技术方面的新的消息了。为了实现我的这个需求,我也找了些方法,新浪本身提供了一个所谓的关联博客的功能,我也设置了,但不知道怎么回事就是没有用,问过一些朋友,也大多如此。
一时没有什么好的方法的情况下,我就想自己来写一个插件,一方面可以自己用,另外,说不定还有很多其他的朋友也有这方面的需求,可以分享给大家用。
要实现一个插件,来自动发布微博,其实并不是很难,这个领域是有规范可遵循的。这里的关键是,如何模拟用户登录到新浪,并且发布新的消息。新浪微博使用的是国际上通用的OAuth机制,已经也大致知道一些。同时,博客园官方在这方面也有实践经验,可以给我们参考,我也是学习了这篇文章
http://www.cnblogs.com/cmt/archive/2010/05/13/1733904.html
我所使用的一个OAuth的.NET程序库,也是博客园这篇文章提到sarlmolapple写了个C#的SDK:http://code.google.com/p/opensinaapi/,相当不错的。分享产生更大价值,由这件事情,我们更加体会到。谢谢sarlmolapple同学。
关于OAuth这块技术,我这里就不赘述了,sarlmolapple所实现的SDK已经很完整,并且有web客户端,和桌面客户端的例子。
我如何设计这个插件
我重点说一下我的几个设计的目标
1. 应该要尽可能方便使用,结合博客作者的使用习惯
2. 应该要尽可能安全,包含用户的隐私
基于方便使用的角度,我不准备单独设计客户端,现在微博客户端其实很多了,我这个想法是针对博客作者而设计,所以我想到了,应该有不少作者和我一样,使用微软的Live writer来编写和发布博客吧,因此我决定写一个Live writer的插件,这是很自然的:我不需要单独再装一个软件,就是我平常用的Live writer就能提供这样的功能,应该是方便的。如果有用Live writer,则本来应该对插件就不陌生,我相信很多人都用了一个代码插入的插件吧,它可以帮助我们将插入的代码很好地格式化。
另外,从安全方面的考虑,我不准备让用户在我的插件中输入任何与用户名和密码有关的信息,大家不需要有任何关于隐私方面的顾虑。这方面新浪的API是做得不错的,我提供的插件,将引导大家在新浪的专门页面上进行登录并且授权,然后将得到的授权码提供给插件即可,插件不记录任何用户名和密码信息。
那么,Live writer如何支持扩展的?
微软的Windows Live系列产品,包括Messenger,Writer,Mail等等都在某个程度上支持扩展。有兴趣的大家,可以参考下面的文档
http://msdn.microsoft.com/en-us/library/dd179336.aspx
具体来说,你可以引用WindowsLive.Writer.Api.dll,并且实现PublishNotificationHook这个抽象类,就可以完成一个简单的插件。
编译好的插件,是一个dll的形式,你需要复制到下面目录就可以了
这个插件我已经提供了下载
http://www.xizhang.com/contents/weibo/weiboplugin.rar
如果有更新,我将统一在下面的页面提供说明
http://www.xizhang.com/weibo.htm
如果你希望在更新时收到通知,可以给这个邮箱(admin@xizhang.com)发一个邮件,我会将你添加到一个邮件联系人列表中,这样日后有更新的版本时,会通过邮件发送给你
如果你不想写邮件,也可以在本博客文章下面留言,届时有更新时,我也会在这里发布消息。
如何使用这个插件
1. 请通过这个地址下载插件
2. 解压缩之后,将weiboplugin.dll复制到Live writer的目录
- 32位系统:C:\Program Files\Windows Live Writer\Plugins
- 64位系统:C:\Program Files (x86)\Windows Live Writer\Plugins
3.打开Live writer,首先要进行配置
选择开始=》Options
切换到plug-ins这个选项卡
这里可以看到一个“新浪微博助手”的插件,选择它,点击“Options”按钮,会有一个选项窗口
你需要点击“授权”按钮
此时会有一个链接出来,这是新浪提供的统一进行授权的页面,点击这个链接
【备注】如果你当前已经登录到了新浪微博,则上面的画面不会出现,直接就会得到下面这个授权码
这里你可以安全地输入你的帐号和密码,然后选择“登录并授权”,正常的话,会得到一个授权码
你将这个授权码复制到刚才那个选项框中来
然后点击“保存”按钮即可
退出选项设置后,你就可以使用该插件了。你写好文章后,按照正常流程发布。第一次使用插件,会有一个提示,点击“确定”即可
以后使用就不需要任何操作,它会自动调用插件。
最终效果如下
结束语
这是我利用闲余时间开发的一个用于博客作者的微博助手,希望对大家有些帮助,博客微博两不误,呵呵