admin管理员组文章数量:1566220
Windows 10 UWP/Mobile 的微博分享实现
前一阵做关于西邮图书馆的分享,目前已经完成,微信,微博,还有本机的共享,微博分享差点恶心死我了,关键没有SDK,更可恶的是, 没有Windows Phone 的SDK。但是人家怎么做手机端分享的,例如IT之家。有次不小心,关注了一个网址 http://wwwblogs/ms-uap ,这是微软UAP团队的博客园地址,在里面看到关于微博分享的实现,大家可以去看看。我自己按照他们做了一部分,但是有一些部分没有做,就实现了微博分享。
第一步
下载微博SDK源码,既然新浪不给咱们手机做SDK,那咱们自己做,源码网址:http://weibowinrtsdk.codeplex/SourceControl/latest
进入之后,看到这部分
Download 下载下来,当你下载之后,先解压,打开
选中项目。我用的是VS2015,如果你打开,这个时候VS有这个界面提醒
因为新浪微博做的是Windows 8 基于Runtime实现的,开发人员应该了解,8.1/phone8.1都可以用Runtime的,还有自我感觉Windows 10能用8.1很多东西,所以就尝试,把8.0的SDK定位到8.1。很多事情尝试之后才能知道。
下来开始定位到8.1。
继续右键属性
目标,点击更改是不是,有我们想要的东西呢?哈哈选择Windows Phone 8.1/Windows 8.1,
看看现在变成了可移植的了。
这样,手机和PC都能用了,可是基于Windows 10是,全平台的,万一不能用怎么办呢,咱们试试么,如果你得应用程序要发布,选择Release,不要选择Debug。然后在生成里面 选择生成解决方案,生成 WeiboSDK。
下来另建一个工程项目,我就以我自己的项目 西邮图书馆为例,在 引用哪里添加引用,然后浏览你的自制WeiBoSDK,如果你是Debug模式下生成的SDK,就在你的SDK路径下找bin/Debug文件夹,如果是Release,就找相对应的文件夹
然后就直接引用SDK就行了。
下来我们正式的开启代码之旅了。
我在分享的页面 OnNavigatedTo方法重写,实现一下代码` ,这里就是进入页面,如果没有实现授权,首先授权,然后才能分享,如果授权,不弹出授权界面
ClientOAuth oauthClient = new ClientOAuth();
// 判断是否已经授权或者授权是否过期.
if (oauthClient.IsAuthorized == false)
{
oauthClient.LoginCallback += (isSucces, err, response) =>
{
if (isSucces)
{
//这里是授权回调成功的执行代码
}
else
{
//授权失败 回调执行代码
}
};
oauthClient.BeginOAuth();//异步方法,如果需要在之后执行代码,请加到上面的LoginCallback中
}`
然后实现分享功能,在分享按钮,我实现如下代码
private async void ShareWeiBo()
{
Autho();
await Task.Delay(1000);
try
{
SdkResponse result = null;
var engine = new SdkNetEngine();
//如果没有图片,则发送文字消息
if (!string.IsNullOrWhiteSpace(info[1]))
{
//微博分享图文消息,图片URI必须在本地,所以只能先下载
List<byte> arrayByte = new List<byte>();
var photoStorageFile = await KnownFolders.PicturesLibrary.CreateFileAsync("scan.jpg", CreationCollisionOption.ReplaceExisting);
//开始异步下载图片
HttpClient client = new HttpClient();
Stream stream = await client.GetStreamAsync(info[1]);
byte[] buffer = new byte[1000];
int read = 0;
while ((read = stream.Read(buffer, 0, 1000)) > 0)
{
arrayByte.AddRange(buffer);
}
await FileIO.WriteBytesAsync(photoStorageFile, arrayByte.ToArray());
var status = await CachedFileManager.CompleteUpdatesAsync(photoStorageFile);
client.Dispose();
stream.Dispose();
if (status == Windows.Storage.Provider.FileUpdateStatus.Complete)
{
//带有图片的分享
ISdkCmdBase cmdBase = new WeiboSDKForWinRT.CmdPostMsgWithPic()
{
Status =info[0],
/*这里是图片的URI,记得,图片URI一定是你本机的图片路径,也就是说,如果网上有一张图片,你必须下载下来,然后获取路径*/
PicPath = photoStorageFile.Path
};
result = await engine.RequestCmd(SdkRequestType.POST_MESSAGE_PIC, cmdBase);
await photoStorageFile.DeleteAsync(StorageDeleteOption.PermanentDelete);
}
}
else
{
//不带有图片的分享
ISdkCmdBase cmdBase = new WeiboSDKForWinRT.CmdPostMessage()
{
Status = info[0]
};
result = await engine.RequestCmd(SdkRequestType.POST_MESSAGE, cmdBase);
}
if (result.errCode == SdkErrCode.SUCCESS)
{
TB_Prompt.Text = "分享成功";
PromptStoryboard.Begin();
}
else if (result.errCode == SdkErrCode.NET_UNUSUAL)
{
TB_Prompt.Text = "网络不可用";
PromptStoryboard.Begin();
}
else if (result.errCode == SdkErrCode.SERVER_ERR)
{
TB_Prompt.Text = "服务器异常";
}
else if (result.errCode == SdkErrCode.TIMEOUT)
{
TB_Prompt.Text = "发送超时";
}
else
{
TB_Prompt.Text = "分享失败";
}
}
catch(Exception ex)
{
TB_Prompt.Text = "分享失败";
}
}
对了,在授权之前,一定要进行密钥初始化,密钥申请,可以去新浪开放平台
private void InitData()
{
// TODO:编译运行之前需要开放平台参数.
SdkData.AppKey = "";
SdkData.AppSecret = "";
//一般这个不需要更改的
SdkData.RedirectUri = "https://api.weibo/oauth2/default.html";
}
手机运行效果图
PC运行效果图
最后给大家分享一下我做这个SDK,查询的资料,都是链接
微软UAP的微博分享资料
http://wwwblogs/ms-uap/p/4222425.html
一个网上大牛写的(我是小菜鸟嘎嘎)
http://blog.csdn/xiahn1a/article/details/49026627
最后感谢他们分享的知识。
版权声明:本文标题:Windows10 UWPWindows 10 Mobile 的微博分享实现 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726934398a1090806.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论