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

4
当我使用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');
          }
      }

预期行为:应该显示警报。控制台消息应该被记录下来。用户应该被发送到重定向URI。

实际行为:这三件事情都没有发生。发送对话框打开,to:字段正确地预填。当我点击发送时,它会被正确发送。但我需要触发回调并将用户发送到redirect_uri。


嘿,有没有可能给我们一个链接?这可能听起来很愚蠢,但你确定你正在使用的浏览器中控制台是活动的吗?如果你console.log(response),会发生什么? - Claudiu
您确定消息已正确发送? - Somnath Muluk
控制台处于活动状态,消息已正确发送。 - JMan
这是一个已知的错误。请参见:https://github.com/davejohnson/phonegap-plugin-facebook-connect/issues/118 - keune
似乎'redirect_uri'与回调存在冲突!如果未指定'redirect_uri',则它可以正常工作。但是您必须在应用程序设置中指定正确的'Site URL'。这里有一个很好的讨论:https://dev59.com/7m445IYBdhLWcg3w0NOu - rudyryk
3个回答

2

移除redirect_uri项,回调将会触发。

我之前遇到过同样的问题,后来意识到移除redirect_uri就解决了。


1

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

请参阅此文档以获取FB.UI的一般语法。

但问题在于,与其他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');
           }
          });

当您点击“发送”并成功发送消息时,它将提示一个空字符串。当您点击“取消”时,它将提示“null”。


我使用了您的代码,但它仍然不工作。没有弹出任何警报。我还包括了一个 redirect_uri,但FB没有重定向到那里。我的网站处于沙箱模式,但这不应该是一个问题。有其他解决方案吗? - JMan
发送对话框需要链接是一个活动的URL,可以被世界访问。为了测试目的,请使用任何公开可用的域名。 - Vijay
是的,链接是公开可用的,并且在FB dev应用程序中指定的域中。但用户仍然未被发送到redirect_uri。还有其他解决方案吗? - JMan

0

你在其他浏览器上验证过了吗?检查一下你的浏览器设置。 你安装了类似 "Facebook Disconnect" 的扩展吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接