Всем привет. Решил написать программу, которая должна юзать Vkontakte.ru API. Привожу фрагмент кода.
#include "vkapi.h"
#include <QRegExp>
VkAPI::VkAPI(QString Email, QString Pass, QObject *parent) :
QObject(parent)
{
email = Email;
pass = Pass;
}
void VkAPI::startRequest(QUrl url, QByteArray post)
{
reply = qnam.post(QNetworkRequest(url), post);
connect(reply, SIGNAL(finished()), this, SLOT(replyFinished()));
}
void VkAPI::login()
{
url = QUrl("http://api.vkontakte.ru/oauth/authorize?client_id=2637723&scope=audio&redirect_uri=http://api.vkontakte.ru/blank.html&display=wap&response_type=token");
startRequest(url, "");
QString ip_h;
QString to;
QRegExp re("<input type=\"hidden\" name=\"ip_h\" value=\"(.*)\" />.*<input type=\"hidden\" name=\"to\" value=\"(.*)\">");
re.setMinimal(true);
int pos(0);
while ((pos = re.indexIn(html, pos)) != -1)
{
ip_h = re.cap(1);
to = re.cap(2);
pos += re.matchedLength();
}
QByteArray post = "email=" + email.toUtf8() +
"&from_host=api.vkontakte.ru&ip_h=" + ip_h.toUtf8() +
"&pass=" + pass.toUtf8() +
"&q=1&to=" + to.toUtf8();
url = QUrl("https://login.vk.com/?act=login&soft=1&utf8=1");
startRequest(url, post);
}
void VkAPI::replyFinished()
{
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (!redirectionTarget.isNull()) {
QUrl newUrl = url.resolved(redirectionTarget.toUrl());
url = newUrl;
reply->deleteLater();
startRequest(url, "");
return;
}
else {
html = reply->readAll();
}
reply->deleteLater();
reply = 0;
}
Только почему-то я не могу авторизоваться. Что я делаю не так?
С сетью в Qt имею дело впервые и очень нуждаюсь в помощи более опытных.
Заранее благодарен.