1

簡単な読書用キャンバスアプリを作成しています。コンテンツ/記事を読み込む前に、ユーザーがログインしているかどうかを確認したいと思います。当然、FB.Initメソッドがあり、その中にgetLoginStatusがあり、次のようになります(名前空間とIDを削除しました)。

    <script> 
    window.fbAsyncInit = function() {       
      FB.init(
      {
        appId   : '[APP ID]', // App ID
        status  : true, // check login status
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true  // parse XFBML
      });

      FB.getLoginStatus(function(response) {      
        if (!response.authResponse) {
         var oauth_url = 'http://www.facebook.com/dialog/oauth/';
         oauth_url += '?client_id=[APP ID]';
         oauth_url += '&redirect_uri=' + encodeURIComponent('http://apps.facebook.com/[APP NAMESPACE]/');
         oauth_url += '&scope=read_stream,publish_stream,offline_access'
         window.top.location = oauth_url;
         }  
      });   

    };
    // Load the SDK Asynchronously
    (function(d){
      var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
      js = d.createElement('script'); js.id = id; js.async = true;
      js.src = "//connect.facebook.net/en_US/all.js";
      d.getElementsByTagName('head')[0].appendChild(js);
    }(document));
</script>

しかし、私が何をしても、最初にHTMLコンテンツ(私の記事、Div、段落、テキストなど)をロードし、それが終了した後にリダイレクトします。

スクリプトは私のHTMLの頭です。また、本文のonLoad()メソッドを使用してロードしようとしましたが、それも機能しませんでした。リダイレクトする前に、HTMLコンテンツの一部がロードされます。

HTMLコードの1文字または画像をロードする前に、ユーザーがFacebookにログインしているかどうかを確認する(登録していない場合はリダイレクトする)にはどうすればよいですか?

4

1 に答える 1

1

facebook js sdkの非同期ロードを使用しており、それ以上に、サーバーから出力を送り返すと(静的コンテンツまたは動的コンテンツ)、ブラウザーはコンテンツ全体を取得してロードしますが、できることはほとんどありません。それ。

ユーザーが以前に認証されているかどうかを確認する場合は、サーバー側の認証フローを使用することをお勧めします。そうすれば、コンテンツをユーザーに返す前にステータスを知ることができます。ユーザーが認証されていないことがわかった場合、ユーザーに返送するコンテンツはリダイレクトコンテンツです。ユーザーが認証されて戻ってきた場合にのみ、キャンバスコンテンツを送り返します。


編集

アプリ全体が静的である場合は、そのままにしておきます。サーバー側の認証のためだけにphp(または他のサーバー側のソリューション)を追加する必要はありません。

リダイレクトの前にページが読み込まれるかどうかを気にする理由が正確にはわかりません。次の2つの「解決策」があります。

(1)fb sdkと、ユーザーがログインしているかどうかを確認するためのメソッドのみを含む最小化されたページをロードします。ログインしていない場合は、リダイレクトします。彼がログインしている場合は、残りのコンテンツを追加するスクリプトをロードし、それを動的にdomに追加します。

(2)ログインする前にユーザーに何かを見せたくない場合は、その部分をcssで非表示にし、ログイン時にjavasriptを使用して変更します。

于 2012-05-01T15:22:09.750 に答える