SuperSocialShare(https://ssshare.codeplex.com/)是一个面向中国的Windows Phone 8开发人员的社交分享SDK,封装了国内主流社交平台(新浪微博、腾讯微博、人人网、开心网、搜狐微博、网易微博)的分享接口,让开发者实现应用内的一键分享变得更简单。
授权
社交平台的分享都需要用户登录授权,SuperSocialShare对各大平台的OAuth2.0授权接口进行统一,开发者需要到相应的社交平台的开放平台上注册应用,获取应用的App Key、App Secret和CallbackUrl(回调地址,各个平台的回调地址注册方式不同,需要开发者细心)。
首先在App中定义全局的SocialType和SocialClient;
/// <summary> /// 获取或设置当前进行分享的社区 /// </summary> public static SocialClient CurrentClient { set; get; } /// <summary> /// 获取或设置当前进行分享的社区类型 /// </summary> public static SocialType SocialType { set; get; }
分享前先检查相应社区的授权是否可用,如果可用直接进入分享页面,如果未进行授权或者授权信息已经过期,则进入授权页面。
void process(SocialType type) { App.SocialType = type; switch (type) { case SocialType.KaiXin: App.CurrentClient = new KaixinClient(); break; case SocialType.NetEase: App.CurrentClient = new NetEaseClient(); break; case SocialType.Renren: App.CurrentClient = new RenrenClient(); break; case SocialType.Sina: App.CurrentClient = new SinaClient(); break; case SocialType.SoHu: App.CurrentClient = new SoHuClient(); break; case SocialType.Tencent: App.CurrentClient = new TencentClient(); break; default: break; } if (AuthorizeManager.IsAuthorizeValid(type)) { NavigationService.Navigate(new Uri("/SharePage.xaml", UriKind.Relative)); } else NavigationService.Navigate(new Uri("/AuthorizePage.xaml", UriKind.Relative)); }
授权页面上需要SuperSocialShare.Controls命名空间下的AuthorizeControl控件,并且后台代码中注册AuthorizeControl的AuthorizeCompleted事件。
AuthorizeControl.Client = App.CurrentClient; AuthorizeControl.AuthorizeCompleted += AuthorizeControl_AuthorizeCompleted; AuthorizeControl.BeginRequest(); void AuthorizeControl_AuthorizeCompleted(AsyncEventArgs e) { if (e.Error == null) { _authorizeSucceed = true; Dispatcher.BeginInvoke(() => { MessageBox.Show("Authorize Succeed!"); NavigationService.Navigate(new Uri("/SharePage.xaml", UriKind.Relative)); }); } }
分享
授权成功后进入分享页面,调用SocialClient的ShareText或者ShareTextWithImage进行分享。同时注册SocialClient的ShareCompleted事件,在事件的处理函数中查看分享是否成功或者查看分享失败的原因。
void CurrentClient_ShareCompleted(object sender, AsyncEventArgs e) { string tip = string.Empty; if (e.Error == null)//分享成功 { tip = "分享成功!"; } else { tip = "分享失败,error:" + e.Error.Message; } Dispatcher.BeginInvoke(() => { MessageBox.Show(tip); }); }
这里简单介绍了一下SuperSocialShare的用法,https://ssshare.codeplex.com/上有完整的Demo工程。