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

您不能从onload事件中调用它,因为您只能在 facebook sdk 完成加载和初始化后发出 api 请求。

它应该是:

<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 回答