【前言】
现在各大网站纷纷推出各自的 Web Api,比如:新浪,腾讯,人人,街旁等。这些Web Api大多遵循 REST 架构风格,通过json格式的数据进行交互。
上传图片的示例代码:
读取最新关注微博的示例代码:
附,如何设置测试账号:
现在各大网站纷纷推出各自的 Web Api,比如:新浪,腾讯,人人,街旁等。这些Web Api大多遵循 REST 架构风格,通过json格式的数据进行交互。
网站上对接口进行说明时也有示例的json数据。我们知道在开发静态语言客户端的时候,因为你没有这些实体的定义,你需要自己一行一行码这些代码。
于是 @韦恩卑鄙 和我(@原数据)开发了这套框架利用网站上这些示例 json,自动生成这些定义(实体类) 来简化开发。它包括:t4,RestApiCore,
OAuthLib, MVVMCommon 。项目地址:http://jdcb.codeplex.com/,在网上查了下新浪还没有提供 winRT 下的SDK,因此有了下面这个子项目。
【新浪微博开放平台SDK for WinRT】
新浪微博开放平台API for WinRT 是一个基于新浪微博开放平台第二版API接口进行封装的一个针对Windows 8 平台(Xaml 应用)的软件开发包。
本SDK有助于.Net平台开发人员在 Windows 8 移动平台上快速简便地开发微博相关应用。
下载SDK:http://jdcb.codeplex.com/downloads/get/599225
【特点】
1. 内置了新浪授权页面的授权过程
2. 异步编程框架,支持 async/await 关键字(而不用回调回调回调)
3. 支持新浪微博v2.0的新版API
所有API都有和网站上一样的提示,让使用者快速上手。
登录的示例代码:
public class LoginViewModel : SinaWeibo_Win8AppStore.Common.BindableBase { private const string AppKey = "{your key}"; private const string AppSecret = "{your secret}"; private const string Callback = "{your callbackURL}"; public async Task<WeiboClientV2> LoginAsync() { var weibo = new SinaWeiboClientV2.WeiboClientV2(); weibo.Initialize(AppKey, AppSecret, Callback); var json = Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] as string; if (!string.IsNullOrEmpty(json)) { weibo.AccessToken = await JsonConvert.DeserializeObjectAsync<OAuthAccessToken>(json); } if (weibo.AccessToken == null) { // 认证 await weibo.AuthenticateAsync(); } // 授权 await weibo.AuthorizeAccessAsync(System.Threading.CancellationToken.None); Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] = await JsonConvert.SerializeObjectAsync(weibo.CurrentAuthToken.ContextData["AccessToken"]); return weibo; } }
采用 WinRT 的 WebAuthenticationBroker 进行应用授权。
(下载示例的童鞋们,别忘记在自己的应用中加上测试账号,否则临时应用的授权不会通过)
发布微博的示例代码:
(下载示例的童鞋们,别忘记在自己的应用中加上测试账号,否则临时应用的授权不会通过)
发布微博的示例代码:
var request = new SinaWeiboClientV2.StatusesUpdate.Request { Status = this.InputArea.Text }; var response = await Weibo.ExecuteStatusesUpdateAsync(request);
var fileInfo = new RestAPICore.FileUploadInfo(); fileInfo.LocalPath = ImageFile.Name; fileInfo.StreamFactory = GetImageFile(ImageFile); var request = new SinaWeiboClientV2.StatusesUpload.Request { Status = this.InputArea.Text, Pic = fileInfo }; var response = await Weibo.ExecuteStatusesUploadAsync(request);
private async Task<Stream> GetImageFile(StorageFile file) { var s = await file.OpenAsync(FileAccessMode.Read); return s.AsStream(); }
var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request); if (string.IsNullOrEmpty(_maxId)) { foreach (var item in response.Value.Statuses) { _statusFriendsTimeline.Add(item); } }
附,如何设置测试账号: