ログインと登録に Facebook PHP SDK を使用しています。コードは次のようになります。
require_once('facebook/facebook.php');
$facebook = new Facebook(array(
'appId' => 'id',
'secret' => 'secret',
'cookie' => true,
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = NULL;
}
}
if ($user) {
$_SESSION["logout_url"] = $logoutUrl = $facebook->getLogoutUrl( array(
'scope' => 'offline_access, publish_stream, email',
));
$_SESSION["userprofile"] = $user_profile;
header("Location: $index");
}
else {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'offline_access, publish_stream, email',
));
header("Location: $loginUrl");
}
ログインして、Web ブラウザーの Facebook セッションをオフにしてから再度オンにすると、次のような JS スクリプトを追加します。
FB.init({
appId : 'id',
status : true,
cookie : true,
xfbml : true
});
Cookieに関する私の問題を解決するはずです。しかし、2 回目にログインすると、スクリプトがリダイレクトの無限ループを作成し、サイトを読み込めなくなります。この後、app_secret_id を再起動し、JS コードを切り取って再度ログインできるようにする必要があります。