Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: Mihail от Декабрь 18, 2014, 18:23



Название: Авторизация VK
Отправлено: Mihail от Декабрь 18, 2014, 18:23
Подскажите пожалуйста, кто в курсе..

Пытаюсь написать приложение vk. Застрял на авторизации...
Хочу сделать авторизационное окно средствами QML, а не с помощью QWebView(Получение страницы и отображение в стиле vk).

Может кто делал? Подскажите. Не могу понять как выглядит запрос при нажатии на клавишу "Войти".



Название: Re: Авторизация VK
Отправлено: kibsoft от Декабрь 18, 2014, 18:27
Скорее всего не получится так сделать авторизацию, т.к. там используется OAuth2. Т.е. нужен обязательно браузер.


Название: Re: Авторизация VK
Отправлено: Mihail от Декабрь 18, 2014, 18:33
Ну есть же приложения, которые не используют этот функционал...

Например:


Название: Re: Авторизация VK
Отправлено: kibsoft от Декабрь 18, 2014, 18:44
Для мобильных платформ есть SDK - http://vk.com/dev/android_sdk
Для десктопных только браузер.


Название: Re: Авторизация VK
Отправлено: Mihail от Декабрь 18, 2014, 18:49
Спасибо... Не знал.. Вот это они убл..ки.


Название: Re: Авторизация VK
Отправлено: Alex Custov от Декабрь 18, 2014, 20:17
Для десктопных только браузер.

А разве O2 не подойдёт? https://github.com/pipacs/o2


Название: Re: Авторизация VK
Отправлено: kibsoft от Декабрь 18, 2014, 22:06
Для десктопных только браузер.

А разве O2 не подойдёт? https://github.com/pipacs/o2

В методе link() у o2 характерные строчки:
Код:
trace() << "Emit openBrowser" << url.toString();
    emit openBrowser(url);

В этой либе реализован локальный сервер принятия токенов, когда удаленный сервер делает редирект на заданный url, а все остальное по-прежнему - браузер :)


Название: Re: Авторизация VK
Отправлено: carrygun от Декабрь 19, 2014, 05:27
У меня есть класс, который авторизуется и гоняет методы. Использую только QNetworkAccessManager. Не супер конечно крутой, но всегда можно дописать :). Если надо - могу выложить.


Название: Re: Авторизация VK
Отправлено: Mihail от Декабрь 19, 2014, 10:18
Все-таки есть возможность обойтись без браузера, но надо чтоб VK одобрил твое приложение, что случается редко..
Подробнее: https://vk.com/dev/auth_direct (https://vk.com/dev/auth_direct)


Название: Re: Авторизация VK
Отправлено: carrygun от Декабрь 19, 2014, 11:39
У меня авторизация проходит без браузера, никаких проблем не было ни разу. После авторизации можно гонять любые запросы из их списка API.


Название: Re: Авторизация VK
Отправлено: kibsoft от Декабрь 19, 2014, 13:29
Все-таки есть возможность обойтись без браузера, но надо чтоб VK одобрил твое приложение, что случается редко..
Подробнее: https://vk.com/dev/auth_direct (https://vk.com/dev/auth_direct)

Пишут:
Цитировать
В настоящий момент эта возможность предоставляется только для платформ, не поддерживающих стандартную авторизацию. В заявке необходимо кратко описать функционал приложения.

У меня авторизация проходит без браузера, никаких проблем не было ни разу. После авторизации можно гонять любые запросы из их списка API.
Уверены, что 2 версия OAuth?

Из документации:
Цитировать
Процесс авторизации приложения состоит из 3-х шагов:
Открытие окна браузера для аутентификации пользователя на сайте ВКонтакте.
Разрешение пользователем доступа к своим данным.
Передача в приложение ключа access_token для доступа к API.


Название: Re: Авторизация VK
Отправлено: Mihail от Декабрь 19, 2014, 17:11
carrygun, покажи этот класс плиз...


Название: Re: Авторизация VK
Отправлено: carrygun от Декабрь 19, 2014, 17:28
carrygun, покажи этот класс плиз...

В строках 37 и 38 вам нужно будет подставить свои значения, о том, что писать туда - смотрите в документации ВК. Сигнал methodReplied выбрасывает ответ как строку для удобной передачи в QML, там я проста парсю ответ JSON'ом, можете заменить по своему вкусу. Да и вообще больше под QML переделал класс, но думаю разберетесь.

P.S. при нескольких неудачных попытках, ВК втыкает на входе капчу, тут она не учитывается.


Название: Re: Авторизация VK
Отправлено: kibsoft от Декабрь 19, 2014, 21:26
carrygun, теперь понял как у вас работает. Примерно как здесь: http://habrahabr.ru/post/143972/