2012-05-01 7 views
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コンテンツを最初に(私の記事、Divs、パラグラフ、テキスト...)、それを終えた後にリダイレクトします。

スクリプトは私のHTMLの頭です。また、本体のonLoad()メソッドを使用してロードしようとしましたが、どちらも動作しませんでした。リダイレクトする前にHTMLコンテンツの一部が読み込まれます。

HTMLコードの単一の文字や画像を読み込む前に、ユーザーがFacebookにログインしているかどうかを確認して、そうでない場合はリダイレクトすることができますか?

答えて

1

あなたはfacebook js sdkの非同期読み込みを使用しています。それ以上の場合、出力をサーバから静的コンテンツまたは動的コンテンツに戻すと、ブラウザはコンテンツ全体を取得してロードします。あなたはそれについて行うことができます。

あなたがその前に認証されているかどうかを確認したい場合は、Server-Side auth flowを使用するようアドバイスしてください。 コンテンツをユーザーに返す前にステータスを知ることができます。認証されていないことがわかった場合は、リダイレクトコンテンツが返されます。 ユーザーが認証されたときにのみ、キャンバスのコンテンツを返信します。


編集

あなたの全体のアプリは、その後、その方法だけで、サーバー側の認証のためのPHP(またはその他のサーバー側のソリューション)を追加する必要がそれを維持しない静的な場合。

私はページをリダイレクトする前にロードされている場合は気に理由を正確にわからないんだけど、ここでは二つの「ソリューション」は、次のとおりです。

(1)単にFB SDKとチェックするための方法を持っている最小化ページをロードしますユーザーがログインしているかどうか、彼がリダイレクトしていない場合はそのユーザーをリダイレクトします。 彼がログインしている場合は、残りのコンテンツを追加してDOMに動的に追加するスクリプトを読み込みます。

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

+0

JS SDKでこれを実行できますか?私が見ているのは、PHPの例とスニペットです。私はPHPであまり効率的ではありません。 はいの場合、JSでこれを達成する方法の例を教えていただけますか? –

+0

いいえ、js sdkはクライアント側でのみ使用できます。 sdkはhttpリクエストのファサードであるため、node.jsでサーバー側のJavaScript用に使用するものを見つけるか、自分自身で記述してください。私はPython(数回)とjavaで実装しました。あなたはサーバー側で何を使用していますか? –

+0

私のキャンバスアプリは、サーバーサイド認証を知らず、JS SDKのFB.loginもそれを処理していると私に言われる前に、HTML + JS(全くPHPなし)です。静的HTMLリンク(データフェッチなし)でしか動作しないので、私はサーバー側の要求を必要としませんでした。だから、私はサーバー側で何も使用していないと思います... –

関連する問題