Если вы решили создать приложение ВКонтакте для мобильного телефона или компьютера с использованием Qt, то эта статья для вас.
Для начала, чтобы быть в курсе, что же нам потребуется проделать для успешной авторизации, я рекомендую изучить официальную документацию http://vk.com/dev/auth_mobile, в ней все достаточно подробно описано.
После этого можете смело переходить под кат:
Готовый класс QvkAuthView а так же пример программы, который его использует можно загрузить из svn:
svn checkout https://qttroll.googlecode.com/svn/trunk/qtvkauth qtvkauth
Открытие страницы авторизации делается следующим образом:
void QvkAuthView::openAuthPage()
{
QUrl url("http://api.vkontakte.ru/oauth/authorize");
url.addQueryItem("client_id", QString::number(m_appId)); // ваш идентификатор приложения
url.addQueryItem("scope", QString::number(m_requiredPermissions)); // разрешения, которые требует
// ваше приложение (см. QvkAuthView::Permission)
url.addQueryItem("display", "mobile");
url.addQueryItem("v", "5.0");
url.addQueryItem("redirect_uri", "http://api.vkontakte.ru/blank.html");
url.addQueryItem("response_type", "token");
load(url);
}
Для того, чтобы отловить событие успешной авторизации или же ошибки необходимо обрабатывать сигнал QWebView::urlChanged():
void QvkAuthView::on_urlChanged(const QUrl &newUrl)
{
QUrl url = newUrl.toString().replace("#","?");
if (url.hasQueryItem("error"))
{
emit authFail(url.queryItemValue("error"), url.queryItemValue("error_description"));
return;
}
if (url.hasQueryItem("access_token"))
{
emit authSuccess(url.queryItemValue("access_token"), url.queryItemValue("expires_in").toInt(),
url.queryItemValue("user_id").toInt());
return;
}
}
Здесь следует уделить особое внимание первой строчке где происходит замена '#' на '?'. Т.к. от сервера нам приходит редирект с решеткой вместо знака вопроса.
Далее нам остается обработать сигналы успешной авторизации authSuccess() и ее краха authFail().
Комментариев нет:
Отправить комментарий