私はこの単純なコードを持っています:
// index.php
require_once("/fb/facebook.php");
require_once("/config/config.php");
$facebook = new Facebook(array(
'appId' => $config['appId'],
'secret' => $config['secret'],
'cookie' => true
));
$user = $facebook->getUser();
if ($user === 0) {
$loginUrl = $facebook->getLoginUrl(array(
'redirect_uri' => 'https://www.example.com/join.php'
));
echo("<script> top.location.href='" . $loginUrl . "'</script>");
exit;
}
else {
var_dump($facebook->api("/me"));
}
そして、join.phpコードは次のとおりです。
//join.php
require_once("/fb/facebook.php");
require_once("/config/config.php");
$facebook = new Facebook(array(
'appId' => $config['appId'],
'secret' => $config['secret'],
'cookie' => true
));
if (isset($_REQUEST['error'])) {
echo("<script>top.location.href='". $config['errors']['auth'] . "'</script>");
exit;
}
echo("<script>top.location.href='". $config['url'] . "'</script>");
問題は、http://apps.facebook.com/myappsampleにアクセスすると(そしてFacebookにログオンしていない場合)、アプリケーションは認証ダイアログを(正しく)表示しますが、このステップの後、インデックスから無限ループを実行します.phpからjoin.phpへ。
join.phpにエラーがあるかどうかを確認するとわかるように、index.php(アプリケーションのホームページ)にリダイレクトしますが、index.phpではまだ取得$user === 0
しているため、join.phpに別の時間をリダイレクトします。 .... etcなど(無限ループ)。
この種の問題をどのように修正できますか?
どうもありがとうございます!
編集:ログインページのコールバック(redirect_uri)としてjoin.php を使用します。このページの目的は、ユーザーに関する情報をデータベース内に保存することです。そのため、join.phpがそれを実行し、index.phpにリダイレクトして、ユーザーがアプリケーションを使用できるようにします。間違い?