将公共脸谱页面数据加载/显示到自己的网页中

时间:2013-03-08 17:58:21

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

我正试图通过facebook的javascript SDK异步加载一些帖子。我正在页面底部加载javascript文件:

<html>
<head>.....</head>
<body>
 .....
 .....
 .....
 <div id="fb-root"></div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript" src="/res/jquery.stp.js"  charset="utf-8"></script>
</body></html>

在jquery.stp.js中我按这个顺序加载这些东西: - javascript sdk - 一些jquery-things - 函数loadFBPosts() - fb.init()

文件:

var isLoaded = false;   
(function(d, debug){
   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" + (debug ? "/debug" : "") + ".js";
   ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));

$(function(){
    //some jquery event things
})

function loadFBPosts(fbPageId) {
        // Facebook call
        if(isLoaded) {      
                //do some things with the FB.api()
                //and catch errors...
            }else{
                //api not loaded...
            }
 }

window.fbAsyncInit = function() {
        // init the FB JS SDK
        FB.init({
          appId      : 'xxxxx', 
          channelUrl : '//lab.example.com/channel.php', 
          status     : true, 
          cookie     : true, 
          xfbml      : true  
        });

                isLoaded = true;
        laadFBPosts();  // here after FB.init is initialized call the function.
};

问题

现在发生了奇怪的事情。如果我运行此页面,则会弹出一个错误:“请求此资源需要访问令牌”,错误代码为104。 但是,如果我点击页面<a href='javascript:loadFBPosts()'>click</a>上的链接,那么该函数就会按照它应该执行。

这怎么可能?我尝试使用FB.api()获取的资源来自公共Facebook页面。例如FB.api('/ 218818688131271 / posts?limit = 5')所以我不需要访问令牌。正确?

如果我确实需要访问令牌:如果我不想用登录屏幕打扰每个访问者,我该如何获得?因为它只是显示公共信息....

我唯一想做的就是显示我页面上的最后5个帖子以及即将发生的事件。

0 个答案:

没有答案