そのため、FB ログイン ボタンを使用してユーザーがログインできるようにしています。FB ログイン ボタンをクリックすると、ユーザーは fb_redirect.php というファイルにリダイレクトされ、php がセッションを開始できるようになります。
window.fbAsyncInit = function()
{
FB.init({
appId: '12345',
status: true,
cookie: true,
xfbml: true
});
FB.Event.subscribe('auth.login', function(response)
{
window.location = '/fb_redirect.php';
});
};
fb_redirect ファイルには、次のものがあります。
session_start();
require("model/facebook_api/src/facebook.php");
$facebook = new Facebook(array(
'appId' => '12345',
'secret' => '12345'
));
$access_token = $facebook->getAccessToken();
$facebook->setAccessToken($access_token);
if($access_token != "")
{
$user = $facebook->getUser();
if($user != 0)
{
$user_profile = $facebook->api("/".$user);
$fb_id = $user_profile['id'];
$fb_first_name = $user_profile['first_name'];
$fb_last_name = $user_profile['last_name'];
$fb_email = $user_profile['email'];
$_SESSION['login'] = "true";
}
}
header("Location:index.php");
ファイルで何が起こるかは、ややこしいです。それは本当に当たりか外れです。すでに FB にログインしている場合、FB ログイン ボタンを使用して自分のサイトにログインしようとすると、画面がポップアップしてすぐに消えます。しかし、それは私のサイトにログインしません。
FB にログインしていない状態で自分のサイトにログインしようとすると、画面がポップアップし、FB にログインするように求められます。ポップアップ画面で FB に正常にログインすると、リダイレクトが発生します。しかし、そうすると、有効なアクセス トークンが必要であることを知らせるエラー メッセージが表示されます。また、セッションを設定せずにホームページにリダイレクトするだけの場合もあります。したがって、アクセストークンがまったく設定されていなかったと推測しています。
アクセストークンを手動で設定する必要がある可能性があることをどこかで読みました。だから、私は試しました:
$facebook->setAccessToken($access_token);
しかし、それはうまくいきませんでした。
これを理解する方法がわかりません。何か案は?