Exemplo n.º 1
0
        private async void Login()
        {
            //启用实验性功能
            directConnetion = chkExperimental.IsChecked.Value;
            GlobalBaseAPI.ExperimentalConnection = directConnetion;
            //保存设置
            localSettings.Values["directConnection"] = directConnetion;
            stkTxts.Visibility    = Visibility.Collapsed;
            stkBtns.Visibility    = Visibility.Collapsed;
            btnTrouble.Visibility = Visibility.Collapsed;
            ringProgress.IsActive = true;
            grdLoading.Visibility = Visibility.Visible;
            bool success;

            PixivCS.Objects.AuthResult res = null;
            //异步执行登录
            try
            {
                if (useToken)
                {
                    res = await GlobalBaseAPI.AuthAsync(refreshToken);
                }
                else
                {
                    res = await GlobalBaseAPI.AuthAsync(username, password);
                }
                success = true;
            }
            catch
            {
                success = false;
                if (useToken)
                {
                    useToken = false;
                    try
                    {
                        res = await GlobalBaseAPI.AuthAsync(username, password);

                        success = true;
                    }
                    catch
                    {
                        success = false;
                    }
                }
            }
            if (success)
            {
                //登录成功
                //储存凭证
                var vault = new PasswordVault();
                try
                {
                    vault.Remove(GetCredentialFromLocker(passwordResource));
                    vault.Remove(GetCredentialFromLocker(refreshTokenResource));
                }
                catch { }
                finally
                {
                    vault.Add(new PasswordCredential(passwordResource, username, password));
                    vault.Add(new PasswordCredential(refreshTokenResource, username, Data.OverAll.GlobalBaseAPI.RefreshToken));
                }
                //保存当前的身份信息
                currentUser = Data.CurrentUser.FromObject(res.Response.User);
                //如果取消了登录,则避免跳转到主页面
                if (isCancelled)
                {
                    resetView();
                }
                else
                {
                    Frame.Navigate(typeof(MainPage));
                }
            }
            else
            {
                btnTrouble.Visibility = Visibility.Visible;
            }
        }
Exemplo n.º 2
0
        private async void Login()
        {
            stkTxts.Visibility    = Visibility.Collapsed;
            stkBtns.Visibility    = Visibility.Collapsed;
            btnTrouble.Visibility = Visibility.Collapsed;
            ringProgress.IsActive = true;
            grdLoading.Visibility = Visibility.Visible;
            bool       success;
            JsonObject res = null;

            //异步执行登录
            try
            {
                if (useToken)
                {
                    res = await GlobalBaseAPI.Auth(refreshToken);
                }
                else
                {
                    res = await GlobalBaseAPI.Auth(username, password);
                }
                success = true;
            }
            catch
            {
                success = false;
                if (useToken)
                {
                    useToken = false;
                    try
                    {
                        res = await GlobalBaseAPI.Auth(username, password);

                        success = true;
                    }
                    catch
                    {
                        success = false;
                    }
                }
            }
            if (success)
            {
                //登录成功
                //储存凭证
                var vault = new PasswordVault();
                try
                {
                    vault.Remove(GetCredentialFromLocker(passwordResource));
                    vault.Remove(GetCredentialFromLocker(refreshTokenResource));
                }
                catch { }
                finally
                {
                    vault.Add(new PasswordCredential(passwordResource, username, password));
                    vault.Add(new PasswordCredential(refreshTokenResource, username, Data.OverAll.GlobalBaseAPI.RefreshToken));
                }
                //保存当前的身份信息
                currentUser = Data.CurrentUser.FromJsonValue(res["response"].GetObject()["user"].GetObject());
                Frame.Navigate(typeof(MainPage));
            }
            else
            {
                btnTrouble.Visibility = Visibility.Visible;
            }
        }