Javascript Facebook发送对话框标识是否已单击发送或取消

Javascript Facebook发送对话框标识是否已单击发送或取消,javascript,facebook,dialog,facebook-javascript-sdk,Javascript,Facebook,Dialog,Facebook Javascript Sdk,我正在使用Facebook发送对话框向朋友发送消息。如本文所述:我使用的链接与Facebook示例中的链接类似: https://www.facebook.com/dialog/send?app_id=123050457758183&name=People%20Argue%20Just%20to%20Win&link=http://www.nytimes.com/2011/06/15/arts/people-争论只是为了赢得学者们的支持assert.html&redirect\u uri=htt

我正在使用Facebook发送对话框向朋友发送消息。如本文所述:我使用的链接与Facebook示例中的链接类似:

https://www.facebook.com/dialog/send?app_id=123050457758183&name=People%20Argue%20Just%20to%20Win&link=http://www.nytimes.com/2011/06/15/arts/people-争论只是为了赢得学者们的支持assert.html&redirect\u uri=http://www.example.com/response

在我指定为
redirect\u uri
的页面上,我显示的文本是:“您的消息已发送”。然而,我意识到,即使你在Facebook对话框中单击了取消,你也会看到这个页面

有没有办法确定是否单击了“保存”或“取消”


更新:我找到了一个使用FB.ui方法的解决方法,它解决了我面临的直接问题。我仍然很想知道是否有人有更好的解决方案,可以使用上面的发送对话框链接。

我找到了一个解决方案,可以使用Facebook的Javascript SDK的FB.ui方法

      FB.ui({
          method: 'send',
          name: 'People Argue Just to Win',
          link: 'http://www.nytimes.com/2011/06/15/arts/people-argue-just-to-win-scholars-assert.html,
          display: 'popup'
          });
注意:必须将显示设置为弹出,才能使其工作

由于它不需要重定向uri,因此知道是否单击了保存或取消并不是问题。如果您确实希望了解这一点,可以访问响应对象:

      FB.ui({
          method: 'send',
          name: 'People Argue Just to Win',
          link: 'http://www.nytimes.com/2011/06/15/arts/people-argue-just-to-win-scholars-assert.html,
          display: 'popup'
          },
          function(response) {
              if (response){
                  // save has been clicked
              } else {
                  // cancel has been clicked
              }
          });

Andy回答的小补充: 实际上,response对象并没有提供关于发送内容的很多信息(在控制台中返回[]),但是response对象的存在表明“发送”按钮已经按下

FB.ui(obj, function (param) {
if (param) {
// The "SEND" button has been pressed
}
else{
// The "Cancel" button has been pressed
}

有人知道这里是如何报告错误的吗?例如,如果用户确实单击了“共享”,但遇到了一个错误,例如facebook权限不足或网络超时,那么响应对象是如何填充的?响应对象不会提供有关用户是否继续发送或取消发送的任何信息。我被困在同一个地方。@AbhinavGujjar-见下面庞特斯·海默的回答。我会更新我的,包括他的发现。至少对于“共享”行动而言,这似乎并不适用。它为cancel和post返回一个非null对象。我在这里启动了一个不同的线程-我认为由于“共享”操作是一个可以撤消的操作(用户只需删除帖子),api可能故意不提供取消和共享之间的状态区分。另一种解释是,他们这样做是为了防止其他网站将其用作其他功能的网关,并迫使人们发布某些内容作为状态更新。@Andy,你能帮忙吗