private async void HyperlinkButton_Click(object sender, RoutedEventArgs e) { QRPanel.Visibility = Visibility.Visible; PassPanel.Visibility = Visibility.Collapsed; qRCode = new LoginQRCode(); await UpdateQRCode(); }
/// <summary> /// 获取二维码状态 /// </summary> /// <param name="qr">二维码信息</param> /// <returns>二维码状态</returns> public QRState GetQRState(LoginQRCode qr) { var res = ThirdPartAPIs._post_cookies(URL_STATUS, new Dictionary <string, string>() { { "oauthKey", qr.OAuthKey }, { "gourl", "https://www.bilibili.com/" } }); JObject jb = (JObject)JsonConvert.DeserializeObject(res.Result); try { switch (jb.Value <int>("data")) { case -4: return(QRState.WaitingForScan); case -5: return(QRState.WaitingForAccept); case -2: case -1: return(QRState.Expired); default: throw new UnexpectedResultException(jb.ToString(), "Unexpected QRCode state"); } } catch (UnexpectedResultException e) { throw; } catch (Exception) { if (jb.Value <bool>("status")) { Cookies = res.Cookies; LoggedIn = IsOnline(); if (!LoggedIn) { throw new AuthenticateFailedException(jb); } return(QRState.LoggedIn); } else { throw new UnexpectedResultException(jb.ToString()); } } }
public QRLogin(LoginQRCode code) { QRToken = code; LoggedIn = false; }