Пост на Facebook (временная шкала) из Qt Symbian 4.7 - PullRequest
0 голосов
/ 24 марта 2012

Я хочу сделать короткое приложение, которое можно публиковать на моей стене в Facebook (график).Мое приложение основано на компоненте веб-просмотра (QWebView) для получения токена доступа для потока публикации

Я могу взять токен доступа, но когда я пытаюсь что-то опубликовать, на моем Facebook ничего не появляется.

void MainWindow::on_pushButton_clicked(){

    QUrl url("https://www.facebook.com/dialog/oauth");
    url.addQueryItem("client_id","my_app_id");
    url.addQueryItem("redirect_uri","https://www.facebook.com/connect/login_success.html");
    url.addQueryItem("response_type","token");
    url.addQueryItem("scope","read_stream,publish_stream");
    MainWindow::browser->load(url);
    MainWindow::browser->show();
}

void MainWindow::on_browser1_loadFinished(bool arg1)
{

        QUrl url= browser->url();
        QString strUrl = url.toString();
        qDebug()<<"URL: "<<strUrl;

        if( strUrl.contains(QString("access_token="), Qt::CaseSensitive)){

            int sIndex = strUrl.indexOf("access_token=");

            int eIndex = strUrl.indexOf("&expires_in");

            QString mAccessToken= strUrl.mid(sIndex, eIndex - sIndex);

            mAccessToken = mAccessToken.remove("access_token=");

            qDebug()<<"TOKEN: + "<<mAccessToken;

            QUrl params;

                    params.addQueryItem("access_token",mAccessToken);
                    params.addQueryItem("message","TEST !!");
                    params.addQueryItem("link","https://young-day-9284.herokuapp.com/");
                    params.addQueryItem("description","Testing");
                    params.addQueryItem("name","Test ");
                    params.addQueryItem("caption","Testing");

                    qDebug()<<"Mesajul trimis: "<<QString(params.encodedQuery());

                    QNetworkAccessManager mNetManager(this);
                    QNetworkRequest request(QUrl("https://graph.facebook.com/me/feed"));
                    //request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
                    mNetManager.post(request,params.toString(QUrl::None).toAscii());
        }
}

Ответы [ 2 ]

0 голосов
/ 06 апреля 2012

Из Qt doc:

void QUrl :: addQueryItem (const QString & key, const QString & value):

Примечание. Этот метод не кодирует пробелы(ASCII 0x20) как знаки плюс (+), как это делают формы HTML.Если вам нужна такая кодировка, вы должны кодировать значение самостоятельно и использовать QUrl :: addEncodedQueryItem.

или не использовать пробелы.

0 голосов
/ 25 марта 2012

Использование WebKit для такого рода программ излишне. WebKit представляет собой полноценный веб-движок и является довольно тяжелым компонентом с точки зрения использования памяти и сложности.

Попытайтесь взглянуть на различные реализации OAuth, которые уже существуют для Qt. Например это: https://github.com/ayoy/qoauth

QOauth даже поставляется с некоторым примером кода в каталоге doc.

...