0

ユーザーが特定の .php ページに入ると、FB.ui でリクエストを送信します。

このスクリプトを使用して、javascript SDK を非同期ロードします。

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
  appId      : 'YOUR_APP_ID', // App ID
  channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
  status     : true, // check login status
  cookie     : true, // enable cookies to allow the server to access the session
  xfbml      : true  // parse XFBML
});

// Additional initialization code here
};

// 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));

function sendRequestToRecipients(user_id) {
    FB.ui({method: 'apprequests',
      message: 'My Great Request',
      to: user_id, 
    }, requestCallback);
  }
</script>

次に、onLoad 関数を使用してタグ内で関数 sendRequestToRecipients() を呼び出そうとします。

<body onLoad="sendRequestToRecipients('0000'); return false;">

しかし、「予期しない識別子」というエラーが 2 つ表示され、何も起こりません。

また、本文から onload を削除し、sendRequestToRecipients 関数をボタンで手動で呼び出した場合

<input type="button"
    onclick="sendRequestToRecipients('0000'); return false;"
    value="Send"
  />

すべてが完璧に進みます!

何か助けて??

4

1 に答える 1

2

Facebook SDK の読み込みと初期化が完了した後にのみ API リクエストを行うことができるため、 onloadイベントからそれを呼び出すことはできません。

そのはず:

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : 'YOUR_APP_ID', // App ID
            channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
            status     : true, // check login status
            cookie     : true, // enable cookies to allow the server to access the session
            xfbml      : true  // parse XFBML
        });

        sendRequestToRecipients("USER_ID");
    };

    // 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));

    function sendRequestToRecipients(user_id) {
        FB.ui({method: 'apprequests',
            message: 'My Great Request',
            to: user_id, 
        }, requestCallback);
    }
</script>

FB.init の後で、window.fbAsyncInitコールバック メソッドでsendRequestToRecipientsを呼び出したことに注意してください

于 2012-04-25T17:10:27.267 に答える