Facebook apprequest未被发送给Facebook用户

时间:2012-01-02 16:59:58

标签: javascript facebook

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

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和destinatary的用户ID,但邮件永远不会在facebook destinatary帐户中被通知

控制台上没有javascript错误

类似我发布到facebook朋友的墙上,它没有任何问题。相同的代码,但不是'apprequest',方法是'feed'

2 个答案:

答案 0 :(得分:3)

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

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

感谢你的导师

答案 1 :(得分:0)

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

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

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