1

したがって、基本的に単純化された例として、2 つのファイルがあります。1 つは index.php ファイルで、もう 1 つは logout.php ファイルです。

私の index.php ファイルには次のようなものが含まれています (コードの不要な行を切り取りました。ユーザーが私のアプリを認証したと仮定しましょう):

require_once "class/facebook/config.php";
try{
    include_once "facebook.php";
}catch(Exception $e){
    error_log($e);
}

// Create our application instance
$facebook = new Facebook(array(
    'appId'     => APP_ID,
    'secret'    => APP_SECRET,
    'cookie'    => true,
    'domain'    => REDIRECT_URI,
    ));

// Get User ID
$user = $facebook->getUser();
print_r($user);

したがって、Facebook にログインしてこのページをロードすると、基本的にユーザーの Facebook ID が出力されます。これまでのところうまくいっています。

ログアウトするには、次のようなものを含む logout.php を使用するとします。

require_once "class/facebook/config.php";

try{
    include_once "class/facebook/facebook.php";
}catch(Exception $e){
    error_log($e);
}

$facebook = new Facebook(array('appId'  => APP_ID, 'secret' => APP_SECRET, 'cookie' => true));
$facebook->destroySession();
header('location:'.REDIRECT_URI);

このページを読み込むと、Facebook とアプリからログアウトされ、インデックス ページにリダイレクトされます。ここまで順調!index.php がロードされてログアウトされたため、0 が出力されます。それも良さそうです。

シナリオを少し変えてみましょう。facebook にログインしていて、index.php をロードしているとします。うまく機能し、ユーザー ID を返します。罰金。ここで、別のタブを開いて facebook.com に移動するとします。次に、facebook.com から直接ログアウトします。

ここで、前のタブで index.php を更新すると、ユーザーが実際に facebook から既にログアウトしているにもかかわらず、古いユーザー ID が表示されます!

4

2 に答える 2

0

ユーザーが Facebook からログオフしても、ユーザーはアプリケーションからログアウトされません。Facebook とアプリケーションの両方が共通の共通セッションを共有していません。ただし、アプリケーションからのログアウトがトリガーされると、Facebook からもユーザーがログアウトされます。

于 2013-05-21T11:36:33.393 に答える