1

私はFacebookアプリケーションの開発に不慣れであり、JavaScriptとPHPプログラミングの初心者でもあります。

私は現在Facebookアプリケーションを開発していますが、現在リクエストダイアログウィンドウで立ち往生しています。

[リクエスト]ダイアログが表示されたら、必要な友達を選択して[リクエストの送信]をクリックすると、requestCallback(response)が実行され、リクエストを受け取った友達に期待どおりに通知されます。しかし、「キャンセル」または青色の閉じるボタンをクリックすると、requestCallback(response)も実行されますが、選択した友達はリクエストについて通知されません。

これが私のコードです:

function requestCallback(response)
{
    //console.log(response);
    location.href='step2.php';
}

したがって、[キャンセル]をクリックするか閉じるボタンをクリックしても、上記のスクリプトは引き続き実行されます(指定したページstep2.phpに移動します)。

ユーザーがキャンセルボタンをクリックするか、モーダルウィンドウボタンを閉じると、ページは同じページに留まります。

誰もがこの問題を解決する方法を知っていますか?

ありがとう!

4

1 に答える 1

5

リクエストが送信されたかどうかで同じではないため、Facebookレスポンスオブジェクトの内容を確認するだけで済みます。

何かのようなもの :

function requestCallback(response)
{
    if(response && response.request_ids) {
         // Here, requests have been sent, facebook gives you the ids of all requests
         //console.log(response);
         location.href='step2.php';
    } else {
         // No requests sent, you can do what you want (like...nothing, and stay on the page).
    }
}

または、新しい構造 ( Request 2.0 Efficient )を使用している場合:

function requestCallback(response)
{
    if(response && response.request) {
         // Here, requests have been sent, facebook gives you the request and the array of recipients
         //console.log(response);
         location.href='step2.php';
    } else {
         // No requests sent, you can do what you want (like...nothing, and stay on the page).
    }
}

応答オブジェクトの構造を見て、条件を作成します。ユーザーがダイアログを終了したときに気付く可能性を持たせるために、閉じるボタンを押したときでもコールバックが発生します。彼がリクエストを送信したかどうかを確認し、あなたが望むように行動するのはあなた次第です! :)

また、重要なこととして、 Facebook は数週間前にリクエスト システムを更新し、アプリの設定で「リクエスト 2.0」を利用できるようにしました。デフォルトではオフになっていますが、有効にすると人にリクエストを送る際のレスポンスオブジェクトの構造が変わります。したがって、コールバックで条件を更新する必要があります。

すべてがここで説明されています: http://developers.facebook.com/blog/post/569/

于 2011-10-14T10:19:15.020 に答える