【问题标题】:Facebook apprequest not being sent to facebook usersFacebook apprequest 未发送给 Facebook 用户
【发布时间】:2025-12-19 00:25:01
【问题描述】:

我正在开发一个与 facebook 集成的网络应用程序,并且我正在使用请求对话框来邀请新用户。因此,我的应用程序的用户可以单击一个按钮向他的一些尚未使用的 Facebook 朋友发送应用请求。

exports = fm.namespace(this,'bla','facebook')

exports['init'] = function(){
  window.fbAsyncInit = function() {
    if (undefined !=RAILS_ENV['facebook_app_id'])
    {FB.init({
               appId      : RAILS_ENV['facebook_app_id'], // App ID
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      oauth      : true, // enable OAuth 2.0
      xfbml      : true  // parse XFBML
             });}
  };

  // Load the SDK Asynchronously
  (function(d){
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
  }(document));
}
exports['sendRequestToOneRecipient']= function (uid) {
  FB.ui({method: 'apprequests',
    message: "bla bla",
    to: uid 
  }, requestCallback);

  function requestCallback(response) {
    if (response && response.to) {
      console.log("Message was sended"); 
    } else {
      console.log("Message was not sended.");
    }
  }
}

据我所知,它不需要任何权限,因为它是来自用户的显式操作。 当用户单击按钮时,会出现 facebook 窗口,并且一切正常。回调正在发回目的地的 appId 和用户 ID,但该消息从未在 facebook 目的地帐户中得到通知

控制台上没有 javascript 错误

类似的,我正在向 facebook 朋友的墙上发帖,它可以正常工作。相同的代码,但不是'apprequest',方法是'feed'

【问题讨论】:

  • 一切似乎都是正确的...是否有任何错误显示?或者只是尝试向测试帐户发送应用请求并检查该请求是否通过图形 api explorer developers.facebook.com/tools/explorer 到达测试帐户 - 您的查询应该是 graph.facebook.com/test_acc_id/apprequests
  • 非常感谢您的回答。我已经在您发送给我的工具上进行了检查,并且应用程序在那里。我没有使用测试帐户。我发送到我的另一个 Facebook 帐户。也许这就是问题所在?
  • 工具返回的数据 { "id": "315836123333964_100003158789166", "application": { "name": "XXX_test", "canvas_name": "XXX", "namespace": "XXX ", "id": "161947XXX94867" }, "to": { "name": "Juan Lab", "id": "100003153330166" }, "from": { "name": "Miguel Martin", "id ": "1383976222" }, "message": "嘿,看看!:)", "created_time": "..." },我不知道那些画布和命名空间字段是什么。也许我还有一些东西要在 Facebook 应用程序上配置??
  • 在 facebook 开发人员上配置我的 facebook 应用程序时,我有指向 localhost:3000 的 url 站点以及指向 localhost 的域。我不知道该配置是否无法正常工作
  • 您可以使用任何 facebook 帐户.. 这里看起来也不错.. 其他用户(您发送给他的人)是否收到了通知,或者如果该用户已经使用相同的应用程序,请检查左侧导航应用名称附近的任何更新!

标签: javascript facebook


【解决方案1】:

为了解决这个问题,我刚刚将我的应用程序标记为 facebook 应用程序并添加了一个画布安全 url,因此当用户收到我的请求时,它可以被重定向到一个有效的站点。一旦我添加了该网址,用户就会收到所有通知。

现在的问题是,我必须创建一个特定页面以嵌入为 iframe,因为我的网站看起来不适合作为 iframe。另外我必须获得一个 ssl 证书,因为画布 url 必须是 https。如果有人知道解决方法,请告诉我。

感谢您的回答

【讨论】:

    【解决方案2】:

    将以下内容放入您的模板文件中:

    if (top.location != self.location)
    {
        top.location = self.location
    }
    

    如果您所在的主要网站的位置与您网站的位置不同,它会将您重定向到您的网站。

    【讨论】: