2011-06-24 10 views
0

facebookアプリケーションのアプリケーションサーバーへの直接アクセスを拒否する方法はありますか?Facebookアプリケーション:サーバー上での直接アクセスを拒否するにはどうすればよいですか?

FacebookはiFrame src = http:// app-domain /を介してアプリケーションを読み込みますが、ページのソースを確認してそのドメインを見つけて、URLをブラウザに貼り付けてアプリケーションを直接表示することができます。

APIにはsigned_requestとoauth_tokenがありますが、これを使用する方法やアプリケーションに直接アクセスを制限するために使用できるかどうかは疑問でした。

ユーザーがブラウザにアプリケーションのURLを入力すると、Facebookにリダイレクトされます。

ありがとうございます。

EDIT: フォーム提出でも機能する方法を見つけました。

// Signed request 
$signed_request = $facebook->getSignedRequest(); 
if(!$signed_request) header("Location: " . $settings['appBaseUrl']); 

これは、アプリケーションに直接アクセスしながら、facebookではなくブラウザをリダイレクトします。

+0

これは今私のために解決されました:D入力をありがとう! – petsoukos

答えて

0

フォーム提出でも機能する方法が見つかりました。 (私の作品は、それはあなたのために動作しない場合があります。最初にそれをテストします。)

// Signed request 
$signed_request = $facebook->getSignedRequest(); 
if(!$signed_request) header("Location: " . $settings['appBaseUrl']); 

Facebookから直接ではなくアプリケーションにアクセスしながら、これはブラウザをリダイレクトします。

0

あなたはFacebookのフレームにいるかどうかを検出するためにJavaScriptが必要です。そうでない場合は、リダイレクトしてください。

+0

ユーザーがjavascriptを無効にする場合はどうすればよいですか? – petsoukos

2

JavaScriptが無効な場合は動作しません。

<script type="text/javascript"> 
    var isInIFrame = (window.location != window.parent.location) ? true : false; 

    if(!isInIFrame){ 
       window.location = 'link-of-application-page'; 
    } 

</script> 
関連する問題