使用新浪微博开放平台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);

}

}

  附上,如何设置测试账号:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线