samedi 28 février 2015

Qt5 http post to Facebook failed

I am a newbie in QT5.


I tried to write a program which can like a post on facebook using my access_token in QT5.


Here are my code snippet


Function use to do http post:



bool MainWindow::postRequest(QString link, QMap<QString, QString> data)
{
QNetworkAccessManager *manager = new QNetworkAccessManager(this);

QUrl url(link);
QNetworkRequest request(url);

request.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data");
request.setHeader(QNetworkRequest::UserAgentHeader,"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36");
QUrlQuery params;
QByteArray postData;
QStringList keys = data.keys();
for(int i = 0; i < keys.size(); i++)
{
params.addQueryItem(keys[i],data[keys[i]]);
}
postData.append(params.toString());
qDebug() << QString(postData);
QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));

QNetworkReply *reply = manager->post(request, postData);
if(reply->error() != QNetworkReply::NoError)
return false;
return true;
}


And when a button clicked, I call the function below:



void MainWindow::likeAct()
{
QString postid = ui->postid->text(); //The id of my post
QString token = ui->token->text(); //My access_token which had full permission
QMap<QString,QString> data;
data.insert("access_token",token);
postRequest(QString("http://ift.tt/1vJHtuH").arg(postid),data);
}


The replyFinished function as following:



void MainWindow::replyFinished(QNetworkReply *reply)
{
if(reply->error() != QNetworkReply::NoError)
{
httpFlags |= REPLY_ERROR;
qDebug() << "ERROR: " << reply->errorString();
}
else
{
QByteArray responseData = reply->readAll();
QString qstr(responseData);
qDebug() << "SUCCESS: " << qstr;
}
}


The qDebug() in replyFinished printed:



ERROR: "Error downloading http://ift.tt/1AUpYa8 - server replied: Forbidden"


Please help me


Aucun commentaire:

Enregistrer un commentaire