日期:2014-05-17  浏览次数:20811 次

[转]如何把一个Windows Phone 7 Twitter应用转换成新浪微博客户端

[转]如何把一个Windows Phone 7 Twitter应用转换成新浪微博客户端
2010年12月01日
  家也许知道,我最近被开心拉下了水,一直在新浪微博灌水,欢迎大家去拍砖: Windows Phone 7推出后不久,就买了一个三星Focus牌手机,可惜无法登录新浪微博的手机版,登录时得到这样的错误:
  Can’t download file! Windows Phone doesn’t support .php files
  直觉是微博的登录网页也许没设置好MIME类型。
  所以在想也许应该写个客户端,找了一下,博客园有几篇文章,用的都是Basic Authentication (意味着你需要记录用户的帐号和密码,而且每次访问时都要发送帐号/密码)。新浪推荐使用oAuth,也提供了一个网友维护的基于OAuth认证的C# SDK,不是很喜欢。想到新浪微博的API与Twitter非常相似,所以想找一个.NET或Windows Phone 7 Twitter应用。找到了微软的Sam Jarawan写的博客系列《Building a ‘real’ Windows Phone Twitter App》和他的Twitt应用:
  http://samjarawan.blogspot.com/2010/10/building-re al-windows-phone-twitter-app_07.html
  发现真的很容易转成可以访问新浪微博的客户端。现将转换步骤列出如下(假定你已经安装了Windows Phone 7开发工具等,也申请了新浪微博应用的App Key和Secret Key):
  1. 去 http://twitt.codeplex.com/ 下载Twitt Part 7应用源码
  2. 在VS2010中打开。修改Common目录下的TwitterSettings类,把其中的Rest URLs改成新浪微博的(参考 http://open.t.sina.com.cn/wiki/index.php/API%E6%96 %87%E6%A1%A3),具体为
  public static string RequestTokenUri = ““;
  public static string AuthorizeUri = “>Twitt使用了bing.com作为CallbackUri,你也可以将其改成你自己的URL,在这里我把它改成了自己博客的地址。Twitt用了一个浏览器控件,通过这个URL来获取oauth_token 和 oauth_verifier ,进而获取access_token(细节参看 http://open.t.sina.com.cn/wiki/index.php/Oauth)。
  还有几个地方硬写了“http://api.twitter.com”,你要将其改成对应于新浪微博的URL,或者重构一下代码,将所有URL集中在TwitterSettings类中。
  3. 重新编译,确认无错。在target下拉框中,选择Windows Phone 7 Emulator,然后按F5。当新浪微博授权页面出现时,输入你自己的新浪微博的帐号和密码,这时会出现:“获取到授权码:。。。。。(6个数字)“,而没有重新定向返回到应用。这好像是新浪微博授权机制的一个小bug,并不记住“/request_token”时传给服务器的callback URL。为解决这个问题,需要在Views目录下TwitterAuthPage类中的TwitterRequestTokenCompleted方法中在if语句前加一行(在此折腾了好久,反复阅读新浪微博文档,也麻烦了宝玉,谢谢宝玉!),
  authorizeUrl += “&oauth_callback=” + System.Net.HttpUtility.UrlEncode(TwitterSettings.C allbackUri);
  重新编译运行,就没问题了。新浪授权后,也许会得到几个对话框埋怨错误,但点击OK后就没问题了,也可以去settings一列下点击Refresh按钮。就这么简单!
  Twitt使用了Hammock for REST(http://hammock.codeplex.com/ )做oAuth认证,这是个非常棒的.NET REST 库,极大地简化了对REST服务的访问,高度推荐!
  下面是一张做了一些汉化后的截图:
  
  当然Twitt并没有完全实现微博的功能,但可以作为一个很好的起点。该应用里面涉及的内容很多,建议有兴趣者对Sam Jarawan的七篇文章(作者描写的过程非常详细)从头研究起,跟着做一遍,保证受益多多。