0

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 つの投稿と今後のイベントを表示することだけです。

4

0 に答える 0