1

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>

なんで ?

4

1 に答える 1

2

すべてのリクエストを取得する場合は、/ me / apprequestsをクエリする必要があります。これにより、アプリケーションで保留中のすべてのアプリリクエストのjson配列が取得されます。次に、それらを繰り返し処理して、送信者IDを取得できます。

ただし、リクエストが1つだけ必要な場合は、クエリを実行する必要があります/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");
            }
        }
    }
});
于 2012-05-22T09:23:10.453 に答える