使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台APIforWinRT:新浪,人人,街旁等 )
优采云 发布时间: 2021-12-23 13:24使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台APIforWinRT:新浪,人人,街旁等
)
【前言】
现在各大网站都推出了自己的Web Api,如:新浪、腾讯、人人网、记边等,这些Web API大多遵循REST架构风格,通过json格式的数据进行交互。
网站 描述接口时也有示例json数据。我们知道在开发静态语言客户端的时候,因为你没有这些实体的定义,所以需要对这些代码逐行进行编码。
所以@韦恩NBA 和我(@原数据)在 网站 上使用这些示例 json 开发了这个框架,以自动生成这些定义(实体类)以简化开发。它包括:t4、RestApiCore、
OAuthLib、MVVMCommon。项目地址:上网查了一下,新浪没有提供winRT下的SDK,所以有如下子项目。
【新浪微博WinRT开放平台SDK】
WinRT新浪微博开放平台API是基于新浪微博开放平台第二版API接口封装的Windows 8平台软件开发包(Xaml应用)。
该SDK帮助.Net平台开发者在Windows 8移动平台上快速轻松地开发微博相关应用。
下载 SDK:
【特征】
1. 内置新浪授权页面授权流程
2. 异步编程框架,支持 async/await 关键字(无回调回调)
3. 支持新浪微博新版API v2.0
所有API的提示都和网站上的一样,方便用户快速上手。
登录示例代码:
public class LoginViewModel : SinaWeibo_Win8AppStore.Common.BindableBase
{
private const string A*敏*感*词*ey = "{your key}";
private const string AppSecret = "{your secret}";
private const string Callback = "{your callbackURL}";
public async Task LoginAsync()
{
var weibo = new SinaWeiboClientV2.WeiboClientV2();
weibo.Initialize(A*敏*感*词*ey, AppSecret, Callback);
var json = Windows.Storage.ApplicationData.Current.LocalSettings.Values["AccessToken"] as string;
if (!string.IsNullOrEmpty(json))
{
weibo.AccessToken = await JsonConvert.DeserializeObjectAsync(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 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);
}
}
附上,如何设置测试账号: