0

Facebook アプリに Facebook キャンバスでのみアクセスして、自分の Web サイトではアクセスしたくない。現在、http://mywebdomain.com/facebook/ にアクセスするとアプリケーションが表示されるが、ユーザーをhttps://apps.facebook/myApp/にリダイレクトしたい

私のfacebookオブジェクトは「シンプル」で、次のようなものです:

$facebook = new Facebook(array(
'appId'  => 'xxx',
'secret' => 'yyy',
'cookie' => true
));
4

1 に答える 1

0

$_SERVER["HTTP_HOST"] を調べて、ページへのアクセスに使用されたアドレスを確認し、必要に応じてhttps://apps.facebook/myApp/への 301 リダイレクトを実行します。

if ($_SERVER["HTTP_HOST"] == "Your domain") {
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: https://apps.facebook/myApp/"); 
}
else
{
... your app goes here. 
}
?>

ただし、リダイレクトを実装する前に、$_SERVER["HTTP_HOST"] の値を表示するテスト ページを作成し、Facebook 内およびサイトから直接コードにアクセスします。それらが異なっていれば、問題ありません。

安全のために、私はこれを自分でテストします。

編集

実際、いくつかのテストを行ったところ、代わりに $_SERVER["HTTP_ORIGIN"] の存在を確認する必要があります。

Facebook から呼び出している場合は、存在し、Facebook のリンクが含まれています。サイト自体から来ている場合、それは存在しません。

何が起こっているかをよく理解するために、これを最初のプログラムにしてください。

<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";

それがHTTP_ORIGINを見つけた方法です。

次に、上記を次のように置き換える必要があります。

<?php

if (isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORGIN'] === "https://apps.facebook.com"){
... your app.
}
else
{
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: https://apps.facebook/myApp/");
}

HTTP_ORIGIN の代わりに、HTTP_REFERER を使用できます。これには、facebook コンポーネントだけでなく、完全な URL が含まれている必要があります。そうしないと、誰かが Facebook アプリケーションをセットアップして、あなたのコンテンツにリンクする可能性があります。

于 2013-01-21T19:29:59.810 に答える