Russian Qt Forum

Qt => Работа с сетью => Тема начата: qt_user от Ноябрь 01, 2011, 19:56



Название: Авторизация вконтакте
Отправлено: qt_user от Ноябрь 01, 2011, 19:56
Добрый вечер,
Мне необходимо авторизоваться вконтакте, только не через http://vkontakte.ru/login.php, а через
скромный маленький виджет http://vkontakte.ru/developers.php?oid=-1&p=Auth
создал файл index.html который выглядит так:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<script type="text/javascript" src="http://userapi.com/js/api/openapi.js?34"></script>
</head>
<body>
<script type="text/javascript">
  VK.init({apiId: 111});
</script>
<div id="vk_auth"></div>
<script type="text/javascript">
VK.Widgets.Auth("vk_auth", {width: "300px", authUrl: '/developers.php?o=-1&p=Auth'});
</script>
</body>
</html>

далее этот файл открыл считал и отобразил в QWebView, в итоге получилось то что на картинке:
(http://pixs.ru/showimage/authPNG_6818855_3257145.png)

но в отличии от обычного браузера (IE например) кнопка не работает,
Вопрос: как сделать чтобы кнопка "заработала" и как на нее нажать програмно


Название: Re: Авторизация вконтакте
Отправлено: ecspertiza от Ноябрь 01, 2011, 20:29
А у тебя скрипты в QWebView разрешены ? ну и на всякий случай flash-плагины ?


Название: Re: Авторизация вконтакте
Отправлено: qt_user от Ноябрь 01, 2011, 20:33
А у тебя скрипты в QWebView разрешены ? ну и на всякий случай flash-плагины ?
извиняюсь за глупый вопрос - а как их разрешить скрипты и флешки?


Название: Re: Авторизация вконтакте
Отправлено: qt_user от Ноябрь 01, 2011, 21:01
вот добавил атрибуты:
Код:
settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
settings()->setAttribute(QWebSettings::JavaEnabled, true);
settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
settings()->setAttribute(QWebSettings::PluginsEnabled, true);

всеравно не открывает ничего, в чем может быть проблема?


Название: Re: Авторизация вконтакте
Отправлено: ufna от Ноябрь 01, 2011, 21:09
а браузер из QtDemo открывает?


Название: Re: Авторизация вконтакте
Отправлено: ecspertiza от Ноябрь 01, 2011, 21:14
Флешки\скрипты разрешить вот так

ui->webView->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows,true);
ui->webView->settings()->setAttribute(QWebSettings::JavaEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::PluginsEnabled,true);

Браузер из демок открывает. Тоже решил попробовать, просто так QWebView его открывать не хочет, и полез в браузер смотреть что он там колдует :)


Название: Re: Авторизация вконтакте
Отправлено: ecspertiza от Ноябрь 01, 2011, 21:45
Посмотри пример браузера в QtDemo. Насколько понял все волшебство в ф-ции WebPage::acceptNavigationRequest в файлике webview.cpp . Тебе нужно будет создать потомок от QWebPage и там рулить этой ф-цией.


Название: Re: Авторизация вконтакте
Отправлено: qt_user от Ноябрь 01, 2011, 22:00
Посмотри пример браузера в QtDemo. Насколько понял все волшебство в ф-ции WebPage::acceptNavigationRequest в файлике webview.cpp . Тебе нужно будет создать потомок от QWebPage и там рулить этой ф-цией.
это какой Fancy Browser?
или где находятся QtDemo?


Название: Re: Авторизация вконтакте
Отправлено: alexman от Ноябрь 01, 2011, 22:35
Пробовал bool QWebPage::event ( QEvent * ev ) [virtual] c нужным эвентом?


Название: Re: Авторизация вконтакте
Отправлено: ecspertiza от Ноябрь 02, 2011, 08:17
это какой Fancy Browser?
или где находятся QtDemo?

У меня лежит по пути c:\Qt\4.7.3\demos\browser\
Обычно в папке с Qt папка demos - демки, examples -примеры


Название: Re: Авторизация вконтакте
Отправлено: qt_user от Ноябрь 04, 2011, 14:22
Короче дело не в WebPage::acceptNavigationRequest вся соль в QWebPage *QWebPage::createWindow(QWebPage::WebWindowType type)
в этой ф-ции надо создать новое окно внутри которого QWebView  и вернуть указатель на новый QWebPage.
Неправда как-то магически? пример взял с демки браузера