2012-03-24 9 views
0

Facebookの壁紙(タイムライン)に投稿できる短いアプリを作りたいと思っています。 私のアプリは公開ストリームのアクセストークンを取得するためにwebviewコンポーネント(QWebView)に基づいていますQt SymbianからのFacebookウォール(タイムライン)の投稿4.7

私はアクセストークンを取ることができますが、何かを投稿しようとすると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()); 
     } 
} 

答えて

0

WebKitをこの種のプログラムに使用することは過剰です。 WebKitは完全なWebエンジンであり、メモリ使用量と複雑さの点でかなり重いコンポーネントです。

すでにQtに存在するさまざまなOAuthの実装を見てみましょう。たとえば、次のようになります。https://github.com/ayoy/qoauth

QOauthには、docディレクトリにいくつかのサンプルコードが付属しています。 Qtのドキュメントから

+0

動作しません。私はjavaで同じシナリオを作っています。私はHTTPプロキシ(私はプロキシサーバーの背後にある)にアプリプロキシを設定します。私は公共のIPと同じ結果でプロキシサーバーの外で試しました.... – dnp

+0

正確に何がうまくいかなかったのですか?アプリケーションはインターネットに接続することはできますか? – ahf

+0

はい私はHTTP要求をすることができますが、https(この場合)を作ろうとしたときには動作しません。私は自分のプロジェクトLIBS + = -llibcryptoをopen ssl libにリンクしていますが、同じ結果が... HttpsリクエストはWebブラウザで正常に動作します。私はそこに問題があると思うプロキシサーバーとhttps – dnp

0

無効QUrl :: addQueryItem(のconst QStringの&キー、constのQStringの&値):

注:このメソッドは、プラスとして、スペース(ASCIIの0x20の)をコードしません( +)記号は、HTML形式と同様です。この種のエンコーディングが必要な場合は、値を自分でエンコードし、QUrl :: addEncodedQueryItemを使用する必要があります。

スペースを使用しないでください。

関連する問題