Facebook JS SDK:FB.ui回调不起作用 - 需要工作示例代码

时间:2012-03-16 23:37:02

标签: facebook facebook-graph-api sdk facebook-javascript-sdk

当我使用Facebook JS SDK FB.ui调用使用“发送”对话框时,不会触发回调。

FB.ui(
      {
          method: 'send',
          to: ****,            // fbId 
          redirect_uri: *****, // public URL in my app domain 
          link: *****          // public URL 
      },
      function(response) {
          alert('callback was called!');
          if (response != null) {
               console.log('Request was passed along!');
               location.href= ***;    // just in case redirect_uri doesn't work
               return true;
          }
          else {
               console.log('Not passed along. User clicked cancel');
          }
      }

);

预期行为:应显示警报。应记录控制台消息。并且应该将用户发送到redirect_uri。

实际行为:这三件事都不会发生。将打开“发送”对话框,并正确填充“:”字段。单击“发送”时,会正确发送。但我需要触发回调,并且需要将用户发送到redirect_uri。

3 个答案:

答案 0 :(得分:2)

删除redirect_uri项目,将触发回叫。

我几分钟后面临同样的问题,并意识到删除redirect_uri解决了它。

答案 1 :(得分:1)

每个FB.UI都有一个回调函数,它也适用于发送对话框。

有关FB.UI的一般语法,请参阅此document

但问题在于其他FB.UI方法,SEND方法没有返回值。

根据Facebook文档,

  

如果发送邮件成功,用户将被重定向到redirect_uri。否则,将显示错误。与Like不同   按钮,本身没有返回值。

因此,如果消息发送成功并且您没有redirect_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',
          },
          function(response){
           alert(response);
           if(response != null){
            alert('user clicked send');
           }else{
            alert('user clicked cancel');
           }
          });

当您单击发送并且消息成功发送时,它将提醒空字符串,当您单击取消时,它将提示“空”。

答案 2 :(得分:0)

您是否已在其他浏览器上验证过?检查一下您的浏览器设置。 您是否安装了“Facebook Disconnect”这样的扩展程序?