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 回答