3

紛らわしいタイトルで申し訳ありませんが、状況は次のとおりです...

  1. ユーザーが Facebook でアプリにログインする
  2. ユーザーが facebook からログアウトします....別の誰かがコンピュータに来ます...
  3. 2 番目のユーザーが私のアプリにアクセスしようとしています (別の Facebook アカウント、同じコンピューター)
  4. できません...代わりに、スクリプトは前のユーザーのアクセス トークンを取得します。

Facebook PHP SDK を使用しています。

ユーザーが初めてログインしようとすると、次のことを行います。

unset($_REQUEST);
unset($_COOKIE); //don't know if both are necessary
session_destroy();

それでも、新しいfbアカウントはまだ最後のアカウントとして認識されています(以前にログインしたユーザーのアクセストークンを取得すると、そのユーザーはもうログインしていないため、使用しようとすると例外がスローされます)。

ログアウト機能を使用する必要がありますか? Facebookからユーザーをログアウトすると思いますが、これはやりたくないので、アプリで新しいユーザーから新たに始めてください。

何か案は?すべてをクリアしているので、このデータがどこから保持されているのか本当に途方に暮れています。うまくいけば、それは私が見逃しているばかげたものですが、誰かが何かを知っている場合に備えて尋ねると思いました.

4

3 に答える 3

1

これは最終的にうまくいくように見えたものです:

$fb_key = 'fbsr_'.$facebookConfig['app_id'];
setcookie($fb_key, '', time()-3600);
$facebook->destroySession();
于 2012-04-04T10:46:27.210 に答える
0

ありがとう、でもユーザーをFacebookからログアウトしたくありません。アプリからログアウトしただけです。– Sabrina Gelbart 4 月 4 日 10:40

$this->facebook->destroySession(); を実行することで、あなたの質問と矛盾します。facebook ではなく facebook からユーザーをログアウトします。別のユーザーがこのコンピューターを使用したい場合は、facebook アカウントからログアウトする必要があります = 新しいユーザーはあなたのウェブサイトにログインできます。

ユーザーがあなたの Facebook からログアウトするときに、ユーザーの Facebook が facebook.com からログアウトされることを望みませんか? それは私にとってイライラするでしょう

于 2012-12-11T10:25:05.817 に答える
0

サブリナ

有効なユーザー アクセス トークンでログアウトを使用すると、正常に動作するはずです。これが私が「オフラインアクセスが許可されていない限り」使用するものです


$user = $facebook->getUser();
$access_token = $_SESSION['fb_135669679827333_access_token'];
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
if ($user) {
  $params = array (
  access_token => ''.$access_token.''
  );
  $logoutUrl = $facebook->getLogoutUrl($params);
} else {
$params = array(
  scope => 'read_stream,publish_stream,publish_actions,read_friendlists'
  //redirect_uri => $url
  );
  $loginUrl = $facebook->getLoginUrl($params);
};
于 2012-04-03T20:55:07.137 に答える