单击"取消"或"关闭"按钮时,"请求对话框"requestCallback

mok*_*ate 1 facebook friend request invite

我是Facebook应用程序开发的新手,也是JavaScript和PHP编程的新手.

我目前正在开发一个Facebook应用程序,但目前仍处于Request Dialog窗口.

当请求对话框出现时,我选择我想要的朋友,然后单击"发送请求",执行requestCallback(响应),并按预期通知获取请求的朋友.但是,如果单击"取消"或蓝色关闭按钮,则还会执行requestCallback(响应),但未向选定的朋友通知该请求.

这是我的代码:

function requestCallback(response)
{
    //console.log(response);
    location.href='step2.php';
}
Run Code Online (Sandbox Code Playgroud)

因此,无论是单击"取消"还是关闭按钮,上面的脚本仍然会执行(转到我指定的页面step2.php.)

我想要的是当用户点击取消按钮或关闭模态窗口按钮时,页面停留在同一页面.

有谁知道如何解决这个问题?

谢谢!

小智 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).
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用新结构(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).
    }
}
Run Code Online (Sandbox Code Playgroud)

查看响应对象的结构以使您的条件成为可能.即使您点击关闭也会触发回调,以便在用户退出对话框时注意到这一点.由您来验证他是否发送了请求,并按您的意愿行事!:)

此外,重要的事情:Facebook几周前更新了他们的请求系统,在您的应用程序设置中提供"请求2.0".默认情况下它处于关闭状态,但如果您激活它,则向用户发送请求时响应对象的结构将发生变化.所以你必须在回调中更新你的条件!

这里解释了一切:http: //developers.facebook.com/blog/post/569/