在画布页面中获取发件人的ID

时间:2012-05-22 08:58:02

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

我希望使用JS SDK在我的画布页面中获取发件人的ID。

我已编写此代码,但它不起作用:

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
    <head>
    </head>

    <body>

    <div id="fb-root"></div>
<script>
console.log("one");
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'myAppId', // App ID
        status: true, 
        cookie: true,
        xfbml: true,
        oauth: true});

console.log("two");
FB.api("/me/apprequests", function(response) {
    console.log("1");
    if (response.data && response.data.length > 0) {
        console.log("2");
        for (var i = 0; i < response.data.length; i++) {
            console.log("3");
            if (response.data[i].from) {
                console.log("Sender: " + response.data[i].from);
            }
            else {
                console.log("App request and not a user request, unknown sender");
            }
        }
    }
});

  };
console.log("three");
  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>
    </body>

    </html>

为什么?

1 个答案:

答案 0 :(得分:2)

如果你想获得所有请求,那么你应该查询/me/apprequests,这将获得一个json数组,其中包含应用程序待处理的所有应用程序请求。 然后,您可以迭代它们并获取发件人ID。

但是,如果您只想要一个请求,那么您应该查询/REQUEST_ID。 例如,假设请求的ID为xxxx_yyyy(其中xxx是请求ID,yyyy是您的用户ID),那么您需要:https://graph.facebook.com/REQUEST_ID


修改

好吧,如果你想迭代所有请求,然后要求所有请求开始,然后迭代它,而不是每个请求发出一个http请求。 此外,事实证明,请求中的“表单”字段仅适用于“用户生成的请求”,而不适用于“应用程序生成的请求”。

试试这段代码:

FB.api("/me/apprequests", function(response) {
    if (response.data && response.data.length > 0) {
        for (var i = 0; i < response.data.length; i++) {
            if (response.data[i].from) {
                console.log("Sender: " + response.data[i].from);
            }
            else {
                console.log("App request and not a user request, unknown sender");
            }
        }
    }
});