私はFacebook 用のPHP-SDKを使用しており、ローカルホストで動作する例を取得しました。ただし、サーバー上でスクリプトを作成する場合、スクリプトは、スクリプトから facebook へのリダイレクトとその逆のリダイレクトで非常に忙しくなります。(エラー: Fout 310 (net::ERR_TOO_MANY_REDIRECTS):)
もっと多くの人がこの問題を抱えているようです (ここ、ここ、ここ、ここ)。とはいえ、何がうまくいかないのか、明確な答えは見つかりません。
Facebook にリダイレクトします (応答 302):
https://www.facebook.com/dialog/oauth?client_id=166958180001271&redirect_uri=http%3A%2F%2Fdomain.com%2Fscripts%2FGateway.php%3Faction%3DAllowFacebookAccessAction%26app%3D14&state=0dbc178a375595da4751265a7147c01e#_=_
mydomain にリダイレクトします (応答 302):
http://domain.com/scripts/Gateway.php?action=AllowFacebookAccessAction&app=14&state=0dbc178a375595da4751265a7147c01e&code=AQD-dTeyns0OWpGb_PzfHxUy2iRmpc1XgP6Q24DDRX8MiRTE10lV-b-aSNIlOLVHk576vRs3H8Pf9n0kGwU827MrkzUCUoQGFGEQBkkOJnCy9zb6hZs7TVBsKL2iSuZIhDjLsCOPeKy3zfb37Q6LGhtMICCdB_IQAvU0uRvAkSAX8tdVJ65PEv8imx-2yvLaMoGJleZwKogh7m03vlhV8hJk#_=_
この問題を引き起こすコードの一部
...
$facebook = new FacebookApi(array(
'appId' => $app->getProperty('apiKey'),
'secret' => $app->getProperty('secretKey'),
));
$user = $facebook->getUser();
if (!$user) {
header('location: ' . $facebook->getLoginUrl());
exit;
}
...
アップデート:
私はそれがサーバー設定であることを除外しました。そのサーバーで元のサンプル スクリプトを実行できました。