MakeCall() public static method

Выполнить запрос.
public static MakeCall ( string url, IWebProxy webProxy = null ) : WebCallResult
url string URL.
webProxy IWebProxy Данные прокси сервера.
return WebCallResult
Beispiel #1
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="code">Код двухфакторной авторизации</param>
        /// <param name="captchaSid">Идентификатор капчи</param>
        /// <param name="captchaKey">Текст капчи</param>
        /// <param name="host">Имя узла прокси-сервера.</param>
        /// <param name="port">Номер порта используемого Host.</param>
        /// <param name="proxyLogin">Логин для прокси-сервера.</param>
        /// <param name="proxyPassword">Пароль для прокси-сервера</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(ulong appId, string email, string password, Settings settings, Func <string> code = null, long?captchaSid = null, string captchaKey = null,
                                         string host = null, int?port = null, string proxyLogin = null, string proxyPassword = null)
        {
            _host          = string.IsNullOrWhiteSpace(host) ? null : host;
            _port          = port;
            _proxyLogin    = string.IsNullOrWhiteSpace(proxyLogin) ? null : proxyLogin;
            _proxyPassword = string.IsNullOrWhiteSpace(proxyPassword) ? null : proxyPassword;

            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl, host, port, proxyLogin, proxyPassword);

            if (authorizeUrlResult.ResponseUrl.ToString().StartsWith("https://oauth.vk.com/blank.html#access_token="))
            {
                return(EndAuthorize(authorizeUrlResult, host, port, proxyLogin, proxyPassword));
            }

            // Заполнить логин и пароль
            var loginForm = WebForm.From(authorizeUrlResult).WithField("email").FilledWith(email).And().WithField("pass").FilledWith(password);

            if (captchaSid.HasValue)
            {
                loginForm.WithField("captcha_sid").FilledWith(captchaSid.Value.ToString()).WithField("captcha_key").FilledWith(captchaKey);
            }
            var loginFormPostResult = WebCall.Post(loginForm, host, port, proxyLogin, proxyPassword);

            // Заполнить код двухфакторной авторизации
            if (code != null)
            {
                var codeForm = WebForm.From(loginFormPostResult).WithField("code").FilledWith(code());
                loginFormPostResult = WebCall.Post(codeForm, host, port);
            }

            return(EndAuthorize(loginFormPostResult, host, port, proxyLogin, proxyPassword));
        }
Beispiel #2
0
        /// <summary>
        /// Открытие окна авторизации
        /// </summary>
        /// <param name="appId"> id приложения </param>
        /// <param name="settings"> Настройки приложения </param>
        /// <returns> </returns>
        private WebCallResult OpenAuthDialog(ulong appId, [NotNull]
                                             Settings settings)
        {
            var url = CreateAuthorizeUrl(appId, settings.ToUInt64(), Display.Page, "123456");

            return(WebCall.MakeCall(url: url.ToString(), webProxy: Proxy));
        }
Beispiel #3
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="captcha_sid">Идентификатор капчи</param>
        /// <param name="captcha_key">Текст капчи</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(int appId, string email, string password, Settings settings, long?captcha_sid = null, string captcha_key = null)
        {
            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl);

            var loginForm = WebForm.From(authorizeUrlResult).WithField("email").FilledWith(email).And().WithField("pass").FilledWith(password);

            if (captcha_sid.HasValue)
            {
                loginForm.WithField("captcha_sid").FilledWith(captcha_sid.Value.ToString()).FilledWith("captcha_key").FilledWith(captcha_key);
            }
            var loginFormPostResult = WebCall.Post(loginForm);

            var authorization = VkAuthorization.From(loginFormPostResult.ResponseUrl);

            if (authorization.CaptchaID.HasValue)
            {
                throw new VkNet.Exception.CaptchaNeededException(authorization.CaptchaID.Value, "http://api.vk.com/captcha.php?sid=" + authorization.CaptchaID.Value.ToString());
            }
            if (!authorization.IsAuthorizationRequired)
            {
                return(authorization);
            }

            var authorizationForm           = WebForm.From(loginFormPostResult);
            var authorizationFormPostResult = WebCall.Post(authorizationForm);

            return(VkAuthorization.From(authorizationFormPostResult.ResponseUrl));
        }
Beispiel #4
0
        /// <summary>
        /// Открытие окна авторизации
        /// </summary>
        /// <param name="appId"> id приложения </param>
        /// <param name="settings"> Настройки приложения </param>
        /// <returns> </returns>
        private WebCallResult OpenAuthDialog(ulong appId, [NotNull]
                                             Settings settings)
        {
            var url = CreateAuthorizeUrlFor(appId: appId, settings: settings, display: Display.Page);

            return(WebCall.MakeCall(url: url, webProxy: Proxy));
        }
Beispiel #5
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="code">Код двухфакторной авторизации</param>
        /// <param name="captchaSid">Идентификатор капчи</param>
        /// <param name="captchaKey">Текст капчи</param>
        /// <param name="host">Имя узла прокси-сервера.</param>
        /// <param name="port">Номер порта используемого Host.</param>
        /// <param name="proxyLogin">Логин для прокси-сервера.</param>
        /// <param name="proxyPassword">Пароль для прокси-сервера</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(ulong appId, string email, string password, Settings settings, Func <string> code = null, long?captchaSid = null, string captchaKey = null,
                                         string host = null, int?port = null, string proxyLogin = null, string proxyPassword = null)
        {
            _host          = string.IsNullOrWhiteSpace(host) ? null : host;
            _port          = port;
            _proxyLogin    = string.IsNullOrWhiteSpace(proxyLogin) ? null : proxyLogin;
            _proxyPassword = string.IsNullOrWhiteSpace(proxyPassword) ? null : proxyPassword;

            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl, host, port, proxyLogin, proxyPassword);

            // Заполнить логин и пароль
            var loginForm = WebForm.From(authorizeUrlResult)
                            .WithField("email")
                            .FilledWith(email)
                            .And()
                            .WithField("pass")
                            .FilledWith(password);

            if (captchaSid.HasValue)
            {
                loginForm.WithField("captcha_sid")
                .FilledWith(captchaSid.Value.ToString())
                .WithField("captcha_key")
                .FilledWith(captchaKey);
            }
            var loginFormPostResult = WebCall.Post(loginForm, host, port, proxyLogin, proxyPassword);

            // Заполнить код двухфакторной авторизации
            if (code != null)
            {
                var codeForm = WebForm.From(loginFormPostResult)
                               .WithField("code")
                               .FilledWith(code());
                loginFormPostResult = WebCall.Post(codeForm, host, port);
            }

            var authorization = VkAuthorization.From(loginFormPostResult.ResponseUrl);

            if (authorization.CaptchaId.HasValue)
            {
                throw new CaptchaNeededException(authorization.CaptchaId.Value, "http://api.vk.com/captcha.php?sid=" + authorization.CaptchaId.Value);
            }
            if (!authorization.IsAuthorizationRequired)
            {
                return(authorization);
            }

            // Отправить данные
            var authorizationForm           = WebForm.From(loginFormPostResult);
            var authorizationFormPostResult = WebCall.Post(authorizationForm, host, port, proxyLogin, proxyPassword);

            return(VkAuthorization.From(authorizationFormPostResult.ResponseUrl));
        }
Beispiel #6
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="code">Код двухфакторной авторизации</param>
        /// <param name="captchaSid">Идентификатор капчи</param>
        /// <param name="captchaKey">Текст капчи</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(ulong appId, string email, string password, Settings settings,
                                         Func <string> code = null, long?captchaSid = null, string captchaKey = null)
        {
            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl, Proxy);

            if (authorizeUrlResult.ResponseUrl.ToString()
                .StartsWith("https://oauth.vk.com/blank.html#access_token=", StringComparison.Ordinal))
            {
                return(EndAuthorize(authorizeUrlResult, Proxy));
            }

            // Заполнить логин и пароль
            var loginForm = WebForm.From(authorizeUrlResult)
                            .WithField("email")
                            .FilledWith(email)
                            .And()
                            .WithField("pass")
                            .FilledWith(password);

            if (captchaSid.HasValue)
            {
                loginForm.WithField("captcha_sid")
                .FilledWith(captchaSid.Value.ToString())
                .WithField("captcha_key")
                .FilledWith(captchaKey);
            }

            var loginFormPostResult = WebCall.Post(loginForm, Proxy);

            // Заполнить код двухфакторной авторизации
            var isOAuthBlank = WebForm.IsOAuthBlank(loginFormPostResult);

            if (code == null)
            {
                return(EndAuthorize(loginFormPostResult, Proxy));
            }

            if (isOAuthBlank)
            {
                return(EndAuthorize(loginFormPostResult, Proxy));
            }

            var codeForm = WebForm.From(loginFormPostResult)
                           .WithField("code")
                           .FilledWith(code.Invoke());

            loginFormPostResult = WebCall.Post(codeForm, Proxy);


            return(EndAuthorize(loginFormPostResult, Proxy));
        }
Beispiel #7
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="code">Код двухфакторной авторизации</param>
        /// <param name="captchaSid">Идентификатор капчи</param>
        /// <param name="captchaKey">Текст капчи</param>
        /// <param name="webProxy">Прокси-сервер.</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(ulong appId, string email, string password, Settings settings, Func <string> code = null, long?captchaSid = null, string captchaKey = null,
                                         IWebProxy webProxy = null)
        {
            _webProxy = webProxy;
            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl, _webProxy);

            // Заполнить логин и пароль
            var loginForm = WebForm.From(authorizeUrlResult)
                            .WithField("email")
                            .FilledWith(email)
                            .And()
                            .WithField("pass")
                            .FilledWith(password);

            if (captchaSid.HasValue)
            {
                loginForm.WithField("captcha_sid")
                .FilledWith(captchaSid.Value.ToString())
                .WithField("captcha_key")
                .FilledWith(captchaKey);
            }
            var loginFormPostResult = WebCall.Post(loginForm, _webProxy);

            // Заполнить код двухфакторной авторизации

            var codeForm = WebForm.From(loginFormPostResult)
                           .WithField("code")
                           .FilledWith(code?.Invoke());

            loginFormPostResult = WebCall.Post(codeForm, _webProxy);

            var authorization = VkAuthorization.From(loginFormPostResult.ResponseUrl);

            if (authorization.CaptchaId.HasValue)
            {
                throw new CaptchaNeededException(authorization.CaptchaId.Value, "http://api.vk.com/captcha.php?sid=" + authorization.CaptchaId.Value);
            }
            if (!authorization.IsAuthorizationRequired)
            {
                return(authorization);
            }

            // Отправить данные
            var authorizationForm           = WebForm.From(loginFormPostResult);
            var authorizationFormPostResult = WebCall.Post(authorizationForm, _webProxy);

            return(VkAuthorization.From(authorizationFormPostResult.ResponseUrl));
        }
Beispiel #8
0
        /// <summary>
        /// Выполняет обход ошибки валидации: https://vk.com/dev/need_validation
        /// </summary>
        /// <param name="validateUrl">Адрес страницы валидации</param>
        /// <param name="phoneNumber">Номер телефона, который необходимо ввести на странице валидации</param>
        /// <returns>Информация об авторизации приложения.</returns>
        public VkAuthorization Validate(string validateUrl, string phoneNumber)
        {
            if (string.IsNullOrWhiteSpace(validateUrl))
            {
                throw new ArgumentException("Не задан адрес валидации!");
            }
            if (string.IsNullOrWhiteSpace(phoneNumber))
            {
                throw new ArgumentException("Не задан номер телефона!");
            }

            var validateUrlResult = WebCall.MakeCall(validateUrl, Proxy);
            var codeForm          = WebForm.From(validateUrlResult)
                                    .WithField("code")
                                    .FilledWith(phoneNumber.Substring(1, 8));
            var codeFormPostResult = WebCall.Post(codeForm, Proxy);

            return(EndAuthorize(codeFormPostResult, Proxy));
        }
Beispiel #9
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="captcha_sid">Идентификатор капчи</param>
        /// <param name="captcha_key">Текст капчи</param>
        /// <param name="host">Имя узла прокси-сервера.</param>
        /// <param name="port">Номер порта используемого Host.</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(ulong appId, string email, string password, Settings settings, Func <string> code = null, long?captcha_sid = null, string captcha_key = null,
                                         string host = null, int?port = null)
        {
            this.host = string.IsNullOrEmpty(host) ? null : host;
            this.port = port;

            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl, host, port);

            // fill email and password
            var loginForm = WebForm.From(authorizeUrlResult).WithField("email").FilledWith(email).And().WithField("pass").FilledWith(password);

            if (captcha_sid.HasValue)
            {
                loginForm.WithField("captcha_sid").FilledWith(captcha_sid.Value.ToString()).WithField("captcha_key").FilledWith(captcha_key);
            }
            var loginFormPostResult = WebCall.Post(loginForm, host, port);

            // fill code
            if (code != null)
            {
                var codeForm = WebForm.From(loginFormPostResult).WithField("code").FilledWith(code());
                loginFormPostResult = WebCall.Post(codeForm, host, port);
            }

            var authorization = VkAuthorization.From(loginFormPostResult.ResponseUrl);

            if (authorization.CaptchaID.HasValue)
            {
                throw new CaptchaNeededException(authorization.CaptchaID.Value, "http://api.vk.com/captcha.php?sid=" + authorization.CaptchaID.Value.ToString());
            }
            if (!authorization.IsAuthorizationRequired)
            {
                return(authorization);
            }

            // press allow button
            var authorizationForm           = WebForm.From(loginFormPostResult);
            var authorizationFormPostResult = WebCall.Post(authorizationForm, host, port);

            return(VkAuthorization.From(authorizationFormPostResult.ResponseUrl));
        }
Beispiel #10
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(int appId, string email, string password, Settings settings)
        {
            var authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            var authorizeUrlResult = WebCall.MakeCall(authorizeUrl);

            var loginForm           = WebForm.From(authorizeUrlResult).WithField("email").FilledWith(email).And().WithField("pass").FilledWith(password);
            var loginFormPostResult = WebCall.Post(loginForm);

            var authorization = VkAuthorization.From(loginFormPostResult.ResponseUrl);

            if (!authorization.IsAuthorizationRequired)
            {
                return(authorization);
            }

            var authorizationForm           = WebForm.From(loginFormPostResult);
            var authorizationFormPostResult = WebCall.Post(authorizationForm);

            return(VkAuthorization.From(authorizationFormPostResult.ResponseUrl));
        }
Beispiel #11
0
        private VkAuthorization OldValidate(string validateUrl, string phoneNumber)
        {
            if (string.IsNullOrWhiteSpace(value: validateUrl))
            {
                throw new ArgumentException(message: "Не задан адрес валидации!");
            }

            if (string.IsNullOrWhiteSpace(value: phoneNumber))
            {
                throw new ArgumentException(message: "Не задан номер телефона!");
            }

            var validateUrlResult = WebCall.MakeCall(url: validateUrl, webProxy: Proxy);

            var codeForm = WebForm.From(result: validateUrlResult)
                           .WithField(name: "code")
                           .FilledWith(value: phoneNumber.Substring(startIndex: 1, length: 8));

            var codeFormPostResult = WebCall.Post(form: codeForm, webProxy: Proxy);

            return(EndAuthorize(result: codeFormPostResult, webProxy: Proxy));
        }
Beispiel #12
0
        /// <summary>
        /// Авторизация на сервере ВК
        /// </summary>
        /// <param name="appId">Идентификатор приложения</param>
        /// <param name="email">Логин - телефон или эл. почта</param>
        /// <param name="password">Пароль</param>
        /// <param name="settings">Уровень доступа приложения</param>
        /// <param name="captcha_sid">Идентификатор капчи</param>
        /// <param name="captcha_key">Текст капчи</param>
        /// <returns>Информация об авторизации приложения</returns>
        public VkAuthorization Authorize(int appId, string email, string password, Settings settings, Func <string> code = null, long?captcha_sid = null, string captcha_key = null)
        {
            string        authorizeUrl       = CreateAuthorizeUrlFor(appId, settings, Display.Wap);
            WebCallResult authorizeUrlResult = WebCall.MakeCall(authorizeUrl);

            // fill email and password
            WebForm loginForm = WebForm.From(authorizeUrlResult).WithField("email").FilledWith(email).And().WithField("pass").FilledWith(password);

            if (captcha_sid.HasValue)
            {
                loginForm.WithField("captcha_sid").FilledWith(captcha_sid.Value.ToString()).WithField("captcha_key").FilledWith(captcha_key);
            }
            WebCallResult loginFormPostResult = WebCall.Post(loginForm);

            // fill code
            if (code != null)
            {
                WebForm codeForm = WebForm.From(loginFormPostResult).WithField("code").FilledWith(code());
                loginFormPostResult = WebCall.Post(codeForm);
            }

            VkAuthorization authorization = VkAuthorization.From(loginFormPostResult.ResponseUrl);

            if (authorization.CaptchaID.HasValue)
            {
                throw new CaptchaNeededException(authorization.CaptchaID.Value, "http://api.vk.com/captcha.php?sid=" + authorization.CaptchaID.Value.ToString());
            }
            if (!authorization.IsAuthorizationRequired)
            {
                return(authorization);
            }

            // press allow button
            WebForm       authorizationForm           = WebForm.From(loginFormPostResult);
            WebCallResult authorizationFormPostResult = WebCall.Post(authorizationForm);

            return(VkAuthorization.From(authorizationFormPostResult.ResponseUrl));
        }