示例#1
0
 private async void HyperlinkButton_Click(object sender, RoutedEventArgs e)
 {
     QRPanel.Visibility   = Visibility.Visible;
     PassPanel.Visibility = Visibility.Collapsed;
     qRCode = new LoginQRCode();
     await UpdateQRCode();
 }
示例#2
0
        /// <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());
                }
            }
        }
示例#3
0
 public QRLogin(LoginQRCode code)
 {
     QRToken  = code;
     LoggedIn = false;
 }