private async Task DoLoginAsync(string captcha = "") { var result = await BiliClient.Account.LoginAsync(txtBoxAcc.Text, txtBoxPswd.Password, captcha : captcha); switch (result.Status) { case LoginResultType.Success: Task.Run(async() => { await BiliClient.Account.GetMeAsync(); Application.Current.Dispatcher.Invoke(() => windowCaption.GetTargetWindow().Close()); }); break; case LoginResultType.NeedCaptcha: var captchaBlock = new CaptchaBlock(); var mes = await captchaBlock.ShowAsync(); if (mes == ContentDialogResult.Primary) { await DoLoginAsync(captchaBlock.Code); } break; case LoginResultType.Fail: await new ContentDialog { Title = "登陆失败", Content = "账号或密码错误" }.ShowAsync(); ChangeIsLoginingState(false); break; case LoginResultType.Error: await new ContentDialog { Title = "登陆失败", Content = "账号或密码错误" }.ShowAsync(); ChangeIsLoginingState(false); break; } }
private async Task Login() { //var waiting = new WaitingPopup("正在验证数据..."); //waiting.ShowPopup(); string userName = UserNameInputBox.Text; string password = PasswordInputBox.Text; if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password)) { ShowMessageBanner("用户名或密码不能为空"); } else if (CaptchaBlock.Visibility == Visibility.Visible && string.IsNullOrEmpty(CaptchaBlock.Code)) { ShowMessageBanner("验证码不能为空"); } else { var client = MainContainer.Container.GetService <IBiliBiliClient>(); var result = await client.Account.LoginAsync(userName, password, CaptchaBlock.Code); switch (result.Status) { case LoginResultType.Success: var me = await client.Account.GetMeAsync(); ViewModel.ChangeUserInfo(me); //await App.BiliViewModel.GetMeAsync(); HidePopup(); break; case LoginResultType.Fail: ShowMessageBanner("登录失败,请检查账号密码"); break; case LoginResultType.Error: ShowMessageBanner("2233娘无情地驳回了请求,请稍后重试"); break; case LoginResultType.NeedCaptcha: ShowMessageBanner("需要输入验证码"); CaptchaBlock.Visibility = Visibility.Visible; await CaptchaBlock.RefreshCode(); await Task.Delay(1000); HideMessageBanner(); break; case LoginResultType.Busy: ShowMessageBanner("服务器忙,请稍后重试"); break; case LoginResultType.NeedValidate: ShowMessageBanner("需要安全验证"); BackupWebView.Visibility = Visibility.Visible; BackupWebView.Source = new Uri(result.Url.Replace("&ticket=1", "")); await Task.Delay(1000); HideMessageBanner(); break; default: break; } } //waiting.HidePopup(); }