public async Task SinaLogin() { try { string loginInfoJson = AppSettings.Instance.LoginInfoJson; var loginInfo = loginInfoJson != string.Empty ? SocialShare.Weibo.JsonConvertHelper.JsonDeserialize <LoginInfo>(loginInfoJson) : new LoginInfo(); WeiboClient client = new WeiboClient(loginInfo); loginInfo = await client.LoginAsync(); AppSettings.Instance.LoginInfoJson = SocialShare.Weibo.JsonConvertHelper.JsonSerializer(loginInfo); string resJson = await WebProvider.GetInstance().SendPostRequestAsync("http://news-at.zhihu.com/api/4/login", AppSettings.Instance.LoginInfoJson, WebProvider.ContentType.ContentType3); UserInfo userInfo = DataService.JsonConvertHelper.JsonDeserialize <UserInfo>(resJson); if (userInfo != null) { var folder = ApplicationData.Current.LocalFolder; string fileName = System.IO.Path.GetFileName(userInfo.Avatar); var storageFile = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); await new NewsImageDowloader().SaveImage(userInfo.Avatar, storageFile); userInfo.Avatar = $"ms-appdata:///local/{fileName}"; ViewModel.ViewModelLocator.AppShell.UserInfo = userInfo; AppSettings.Instance.UserInfoJson = DataService.JsonConvertHelper.JsonSerializer(userInfo); } } catch (Exception) { //ToastPrompt.ShowToast(ex.Message); } }
public void VerifyCredentials_Test() { // Arrange var request = new SinaVerifyCredentialsRequest(); // Act var user = WeiboClient.Get(request).User; // Assert Assert.IsNotNull(user); Assert.AreEqual("PC遥控器", user.ScreenName); }
public void UserShow_Test() { // Arrange var request = new SinaUserShowRequest("JJ叫我改名给她试新野"); // Act var user = WeiboClient.Get(request).User; // Assert Assert.IsNotNull(user); Assert.AreEqual(request.ScreenName, user.ScreenName); }
public void Add_A_Status_Test() { // Arrange var text = "▓Р╩ниб╬б▓Е " + DateTime.Now.ToLongTimeString(); var requets = new SinaStatusUpdateRequest(text); // Act var status = WeiboClient.Post(requets).Status; // Assert Assert.IsNotNull(status); Assert.AreEqual(text, status.Text); }
public void Add_A_Status_With_Picture_Test() { // Arrange var text = "▓Р╩ниб═╝кг╬б▓Е " + DateTime.Now.ToLongTimeString(); var request = new SinaStatusUploadRequest(text, "c:\\Unnamed.jpg"); // Act var status = WeiboClient.Post(request).Status; // Assert Assert.IsNotNull(status); Assert.AreEqual(text, status.Text); }
public void Add_Comment_Test() { // Arrange var text = "test send a comment at " + DateTime.Now.ToLongTimeString(); var request = new SinaCommentAddRequest(13712497764, text); // Act var comment = WeiboClient.Post(request).Comment; // Assert Assert.IsNotNull(comment); Assert.AreEqual(text, comment.Text); }
public void Get_Broadcast_Timeline_Test() { // Arrange var request = new QQBroadcastTimelineRequest { ReqNum = 1 }; // Act var statuses = WeiboClient.Get(request).Statuses; // Assert Assert.IsNotNull(statuses); Assert.AreEqual(1, statuses.Count); }
public void Get_User_Timeline_Test() { // Arrange var request = new SinaUserTimelineRequest { Count = 1 }; // Act var statuses = WeiboClient.Get(request).Statuses; // Assert Assert.IsNotNull(statuses); Assert.AreEqual(1, statuses.Count); }
public void Get_User_Info_Test() { // Arrange var request = new QQUserInfoRequest(); // Act QQUser user = WeiboClient.Get(request).User; // Assert Assert.IsNotNull(user); Assert.AreEqual("suchuanyi", user.Name); Assert.AreEqual("кдяшцицФою", user.Nick); }
public void Add_A_Status_With_Picture_Test() { // Arrange var text = "▓Р╩ниб═╝кг╬б▓Е " + DateTime.Now.ToLongTimeString(); var request = new QQStatusAddWithPicRequest(text, "c:\\Unnamed.jpg"); // Act var response = WeiboClient.Post(request); // Assert Assert.IsNotNull(response); Assert.AreEqual("0", response.Ret); Console.WriteLine(response.Id); Console.WriteLine(response.Timestamp); }
public IHttpActionResult GetAuth(string type) { try { var request = Context.GetCurrentRequest(); var config = Utils.GetConfigInfo(); var oAuthType = OAuthType.Parse(type); var redirectUrl = request.GetQueryString("redirectUrl"); if (string.IsNullOrEmpty(redirectUrl)) { redirectUrl = ApiUtils.GetHomeUrl(); } var url = string.Empty; if (oAuthType == OAuthType.Weibo) { var client = new WeiboClient(config.WeiboAppKey, config.WeiboAppSecret, redirectUrl); url = client.GetAuthorizationUrl(); } else if (oAuthType == OAuthType.Weixin) { var client = new WeixinClient(config.WeixinAppId, config.WeixinAppSecret, redirectUrl); url = client.GetAuthorizationUrl(); } else if (oAuthType == OAuthType.Qq) { var client = new QqClient(config.QqAppId, config.QqAppKey, redirectUrl); url = client.GetAuthorizationUrl(); } if (!string.IsNullOrEmpty(url)) { HttpContext.Current.Response.Redirect(url); } return(BadRequest("类型不正确")); } catch (Exception ex) { return(InternalServerError(ex)); } }
public void Add_A_Status_Test() { // Arrange var text = "▓Р╩ниб╦═╬б▓Е " + DateTime.Now.ToLongTimeString(); var request = new QQStatusAddRequest(text) { ClientIp = IPUtility.GetFirstLocalIP() }; // Act var response = WeiboClient.Post(request); // Assert Assert.IsNotNull(response); Assert.AreEqual("0", response.Ret); Console.WriteLine(response.Id); Console.WriteLine(response.Timestamp); }
private async void BtnShareImage_Click(object sender, RoutedEventArgs e) { try { WeiboClient client = await WeiboClient.CreateAsync(); var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/唱歌1.png")); var data = (await FileIO.ReadBufferAsync(file)).ToArray(); var shareResult = await client.ShareImageAsync(data, txtShareImage.Text); if (shareResult.IsSuccess) { await new MessageDialog("分享成功").ShowAsync(); } else { await new MessageDialog("分享失败,错误码" + shareResult.ErrorCode).ShowAsync(); } } catch (ArgumentException ex) { // 空字符串或长度超过 140。 await new MessageDialog(ex.Message).ShowAsync(); } catch (AuthorizeException ex) { if (ex.Result.ResponseStatus == WebAuthenticationStatus.UserCancel) { await new MessageDialog("你取消了授权").ShowAsync(); } else if (ex.Result.ResponseStatus == WebAuthenticationStatus.ErrorHttp) { await new MessageDialog("网络故障").ShowAsync(); } } catch (HttpException ex) { await new MessageDialog("网络故障:" + ex.ErrorStatus.ToString()).ShowAsync(); } }
public async Task <ActionResult> GetAuth([FromRoute] string type, [FromQuery] GetAuthRequest request) { var oAuthType = OAuthType.Parse(type); var host = ApiUtils.GetHost(Request); var redirectUrl = request.RedirectUrl; if (string.IsNullOrEmpty(redirectUrl)) { redirectUrl = ApiUtils.GetHomeUrl(); } var url = string.Empty; if (oAuthType == OAuthType.Weixin) { var settings = await _loginManager.GetWeixinSettingsAsync(); var client = new WeixinClient(settings.WeixinAppId, settings.WeixinAppSecret, host, redirectUrl); url = client.GetAuthorizationUrl(); } else if (oAuthType == OAuthType.Qq) { var settings = await _loginManager.GetQqSettingsAsync(); var client = new QqClient(settings.QqAppId, settings.QqAppKey, host, redirectUrl); url = client.GetAuthorizationUrl(); } else if (oAuthType == OAuthType.Weibo) { var settings = await _loginManager.GetWeiboSettingsAsync(); var client = new WeiboClient(settings.WeiboAppKey, settings.WeiboAppSecret, host, redirectUrl); url = client.GetAuthorizationUrl(); } if (!string.IsNullOrEmpty(url)) { return(Redirect(url)); } return(this.Error("类型不正确")); }
public void Add_A_Comment_Test() { // Arrange var text = "²âÊÔ·¢ÆÀÂÛ " + DateTime.Now.ToLongTimeString(); var reid = "47032096626287"; var request = new QQCommentAddRequest(reid, text) { ClientIp = IPUtility.GetFirstLocalIP() }; // Act var response = WeiboClient.Post(request); // Assert Assert.IsNotNull(response); Assert.AreEqual("0", response.Ret); Console.WriteLine(response.Id); Console.WriteLine(response.Timestamp); }
private async void BtnShareText_Click(object sender, RoutedEventArgs e) { try { WeiboClient client = await WeiboClient.CreateAsync(); var shareResult = await client.ShareTextAsync(txtShareText.Text); if (shareResult.IsSuccess) { await new MessageDialog("分享成功").ShowAsync(); } else { await new MessageDialog("分享失败,错误码" + shareResult.ErrorCode).ShowAsync(); } } catch (ArgumentException ex) { // 空字符串或长度超过 140。 await new MessageDialog(ex.Message).ShowAsync(); } catch (AuthorizeException ex) { if (ex.Result.ResponseStatus == WebAuthenticationStatus.UserCancel) { await new MessageDialog("你取消了授权").ShowAsync(); } else if (ex.Result.ResponseStatus == WebAuthenticationStatus.ErrorHttp) { await new MessageDialog("网络故障").ShowAsync(); } } catch (HttpException ex) { await new MessageDialog("网络故障:" + ex.ErrorStatus.ToString()).ShowAsync(); } }
private static async Task <bool> WeiboShare(string url, string text) { CacheProvider cache = new CacheProvider(StorageType.IsolatedStorage); if (GlobalValue.CurrentWeiboUserInfo == null) { GlobalValue.CurrentWeiboUserInfo = cache.GetItem <UserInfo>(CacheKey.WeiboUser) ?? new UserInfo(); } byte[] image = await new HttpClient().GetByteArrayAsync(url); bool shareResult = false; try { WeiboClient client = new WeiboClient(GlobalValue.CurrentWeiboUserInfo); await client.LoginAsync(); WeiboResult result; if (!string.IsNullOrEmpty(url)) { result = await client.ShareImageAsync(image, text); } else { result = await client.ShareTextAsync(text); } GlobalValue.CurrentWeiboUserInfo = client.UserInfo; cache.UpdateItem(CacheKey.WeiboUser, GlobalValue.CurrentWeiboUserInfo); shareResult = true; } catch { shareResult = false; } return(shareResult); }
public IHttpActionResult GetRedirect(string type) { try { var request = Context.GetCurrentRequest(); var config = Utils.GetConfigInfo(); var oAuthType = OAuthType.Parse(type); var redirectUrl = request.GetQueryString("redirectUrl"); var code = request.GetQueryString("code"); var userName = string.Empty; if (oAuthType == OAuthType.Weibo) { var client = new WeiboClient(config.WeiboAppKey, config.WeiboAppSecret, redirectUrl); string name; string screenName; string avatarLarge; string gender; string uniqueId; client.GetUserInfo(code, out name, out screenName, out avatarLarge, out gender, out uniqueId); userName = OAuthDao.GetUserName(OAuthType.Weibo.Value, uniqueId); if (string.IsNullOrEmpty(userName)) { var userInfo = Context.UserApi.NewInstance(); userInfo.UserName = Context.UserApi.IsUserNameExists(name) ? Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "") : name; userInfo.DisplayName = screenName; userInfo.AvatarUrl = avatarLarge; userInfo.Gender = gender; string errorMessage; Context.UserApi.Insert(userInfo, Guid.NewGuid().ToString(), out errorMessage); userName = userInfo.UserName; OAuthDao.Insert(new OAuthInfo { Source = OAuthType.Weibo.Value, UniqueId = uniqueId, UserName = userName }); } } else if (oAuthType == OAuthType.Weixin) { var client = new WeixinClient(config.WeixinAppId, config.WeixinAppSecret, redirectUrl); string nickname; string headimgurl; string gender; string unionid; client.GetUserInfo(code, out nickname, out headimgurl, out gender, out unionid); userName = OAuthDao.GetUserName(OAuthType.Weixin.Value, unionid); if (string.IsNullOrEmpty(userName)) { var userInfo = Context.UserApi.NewInstance(); userInfo.UserName = Context.UserApi.IsUserNameExists(nickname) ? Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "") : nickname; userInfo.DisplayName = nickname; userInfo.AvatarUrl = headimgurl; userInfo.Gender = gender; string errorMessage; Context.UserApi.Insert(userInfo, Guid.NewGuid().ToString(), out errorMessage); userName = userInfo.UserName; OAuthDao.Insert(new OAuthInfo { Source = OAuthType.Weixin.Value, UniqueId = unionid, UserName = userName }); } } else if (oAuthType == OAuthType.Qq) { var client = new QqClient(config.QqAppId, config.QqAppKey, redirectUrl); string displayName; string avatarUrl; string gender; string uniqueId; client.GetUserInfo(code, out displayName, out avatarUrl, out gender, out uniqueId); userName = OAuthDao.GetUserName(OAuthType.Qq.Value, uniqueId); if (string.IsNullOrEmpty(userName)) { var userInfo = Context.UserApi.NewInstance(); userInfo.UserName = Context.UserApi.IsUserNameExists(displayName) ? Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "") : displayName; userInfo.DisplayName = displayName; userInfo.AvatarUrl = avatarUrl; userInfo.Gender = gender; string errorMessage; Context.UserApi.Insert(userInfo, Guid.NewGuid().ToString(), out errorMessage); userName = userInfo.UserName; OAuthDao.Insert(new OAuthInfo { Source = OAuthType.Qq.Value, UniqueId = uniqueId, UserName = userName }); } } if (!string.IsNullOrEmpty(userName)) { request.UserLogin(userName, true); } HttpContext.Current.Response.Redirect(redirectUrl); return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }
public async Task <ActionResult <GetRedirectResult> > GetRedirect([FromRoute] string type, [FromQuery] GetRedirectRequest request) { var host = ApiUtils.GetHost(Request); var oAuthType = OAuthType.Parse(type); var userName = string.Empty; if (oAuthType == OAuthType.Weixin) { var settings = await _loginManager.GetWeixinSettingsAsync(); var client = new WeixinClient(settings.WeixinAppId, settings.WeixinAppSecret, host, request.RedirectUrl); var userInfo = await client.GetUserInfoAsync(request.Code); userName = await _oAuthRepository.GetUserNameAsync(OAuthType.Weixin.Value, userInfo.UnionId); if (string.IsNullOrEmpty(userName)) { var user = new User { UserName = await _userRepository.IsUserNameExistsAsync(userInfo.Nickname) ? Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "") : userInfo.Nickname, DisplayName = userInfo.Nickname, AvatarUrl = userInfo.HeadImgUrl }; var(newUser, _) = await _userRepository.InsertAsync(user, Guid.NewGuid().ToString(), PageUtils.GetIpAddress(Request)); userName = newUser.UserName; await _oAuthRepository.InsertAsync(new OAuth { Source = OAuthType.Weixin.Value, UniqueId = userInfo.UnionId, UserName = userName }); } } else if (oAuthType == OAuthType.Qq) { var settings = await _loginManager.GetQqSettingsAsync(); var client = new QqClient(settings.QqAppId, settings.QqAppKey, host, request.RedirectUrl); var userInfo = await client.GetUserInfoAsync(request.Code); userName = await _oAuthRepository.GetUserNameAsync(OAuthType.Qq.Value, userInfo.UniqueId); if (string.IsNullOrEmpty(userName)) { var user = new User { UserName = await _userRepository.IsUserNameExistsAsync(userInfo.DisplayName) ? Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "") : userInfo.DisplayName, DisplayName = userInfo.DisplayName, AvatarUrl = userInfo.AvatarUrl }; var(newUser, _) = await _userRepository.InsertAsync(user, Guid.NewGuid().ToString(), PageUtils.GetIpAddress(Request)); userName = newUser.UserName; await _oAuthRepository.InsertAsync(new OAuth { Source = OAuthType.Qq.Value, UniqueId = userInfo.UniqueId, UserName = userName }); } } else if (oAuthType == OAuthType.Weibo) { var settings = await _loginManager.GetWeiboSettingsAsync(); var client = new WeiboClient(settings.WeiboAppKey, settings.WeiboAppSecret, host, request.RedirectUrl); var userInfo = await client.GetUserInfoAsync(request.Code); userName = await _oAuthRepository.GetUserNameAsync(OAuthType.Weibo.Value, userInfo.UnionId); if (string.IsNullOrEmpty(userName)) { var user = new User(); user.UserName = await _userRepository.IsUserNameExistsAsync(userInfo.Name) ? Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", "") : userInfo.Name; user.DisplayName = userInfo.ScreenName; user.AvatarUrl = userInfo.AvatarLarge; var(newUser, _) = await _userRepository.InsertAsync(user, Guid.NewGuid().ToString(), PageUtils.GetIpAddress(Request)); userName = newUser.UserName; await _oAuthRepository.InsertAsync(new OAuth { Source = OAuthType.Weibo.Value, UniqueId = userInfo.UnionId, UserName = userName }); } } var token = _authManager.AuthenticateUser(await _userRepository.GetByUserNameAsync(userName), true); if (oAuthType == OAuthType.Qq || oAuthType == OAuthType.Weibo) { return(Redirect(PageUtils.AddQueryString(request.RedirectUrl, $"token={token}"))); } else { return(new GetRedirectResult { RedirectUrl = request.RedirectUrl, Token = token }); } }