在Facebook上向用户发送应用请求通知?

时间:2012-02-27 15:13:45

标签: asp.net facebook facebook-graph-api request

我遇到了很多相同的问题,但没有给出任何具体的答案

我发送邀请给Facebook的朋友说a,b,c,应该发生什么,应该为应用请求显示通知

我已经在PININTEREST的情况下看到了这一点,但是我试图在asp.net中实现这一点。我发现这demo非常接近我想要实现的目标

我到目前为止的代码是:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:fb="https://www.facebook.com/2008/fbml">
  <head>
    <title>Request Example</title>
  </head>

  <body>
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <p>
      <input type="button"
        onclick="sendRequestToRecipients(); return false;"
        value="Send Request to Users Directly"
      />
      <input type="text" value="User ID" name="user_ids" />
      </p>
    <p>
    <input type="button"
      onclick="sendRequestViaMultiFriendSelector(); return false;"
      value="Send Request to Many Users with MFS"
    />
    </p>

    <script>
      FB.init({
        appId  : 'XXXXX',
      });

      function sendRequestToRecipients() {
        var user_ids = document.getElementsByName("user_ids")[0].value;
        FB.ui({method: 'apprequests',
          message: 'XXXXXXX',
          to: user_ids, 
        }, requestCallback);
      }

      function sendRequestViaMultiFriendSelector() {
        FB.ui({method: 'apprequests',
          message: 'My Great Request'
        }, requestCallback);
      }

      function requestCallback(response) {
        // Handle callback here
      }
    </script>
  </body>
</html>

编辑:enter image description here

当我发送请求时,用户没有得到它......没有显示错误

2 个答案:

答案 0 :(得分:2)

以下两件事可能会导致您的请求无法通过 -

  • 缺少或不正确的画布网址
  • 应用程序处于沙箱模式

向用户发送请求的应用程序必须在应用程序的设置中指定canvas URL。当用户对请求(接受它)进行操作时,他/她被重定向到应用程序,特别是画布URL。通过不指定画布URL,您的请求由deemed invalid由Facebook进行,因为没有将用户重定向到的位置。画布URL不能是apps.facebook.com/namespace,因为您的应用程序不在Facebook的域中。您必须将网址设置为您的域。您重定向到的页面应该再次将用户重定向回您的应用程序:

 if(!strpos($_SERVER['HTTP_REFERER'],"apps.facebook.com")) {
    header("location: "._fb_app_path);
    exit();
 }

当被邀请的用户未在应用程序设置中的相应“角色”组中列出时,沙箱模式中的应用程序。沙盒模式下的应用程序只能由作为该应用程序的开发人员,管理员或测试人员的用户访问。

答案 1 :(得分:1)

我相信正确的方法(至少我们使用的方法)是:

function invoke_app_request(){
  var receiverUserIds = FB.ui({
      method: 'apprequests',
      message: 'MESSAGE',
      data: '',
      max_recipients: AN_INT //this is optional
    },
    function(response) {
      //whatever you do here
    }
  );
}

我在某处读取(不要100%),在邀请上显示通知是基于Facebook算法的,并不会在所有应用上显示。它必须对应用活动和历史做些什么。