1

Facebookのログインを自分のWebサイトのログインシステムと統合したいWebサイトに取り組んでいます。facebook-php-sdkをコードに統合しました。ログイン機能は正常に機能します。以下は私が問題にしている点です...

  1. ログアウトしてログインをクリックすると、Facebookのログイン画面が開きません。
  2. ログアウトしてページを更新すると、ログインの詳細が再び表示されます。そして、ログインボタンが消えます。
  3. 上記の2つのポイントが解決した場合、Webサイト全体でログインセッションを維持するにはどうすればよいですか?

上記の2つのポイントについては、以下のコードを使用しました。

    require 'src/facebook.php';

    $facebook = new Facebook(array(
      'appId'  => YOUR_APP_ID,
      'secret' => SECRET_KEY,
    ));

    session_start();



    if($_REQUEST['msg'] == 'logout'){
        setcookie('fbsr_'.$facebook->getAppId(), '', (time() - 3600), '/', 'domain.com');
        $sts = $facebook->destroySession();         
        session_destroy();
        header("Location: index.php");
        //echo '<meta http-equiv="refresh" content="2;url=index.php">';
    } 

    $userId = $facebook->getUser();
    if ($userId && !isset($_SESSION['fbdata'])) {
        $_SESSION['fbdata'] = array("userid" => $userId);       
    }

<?php if ($userId) {
        $userInfo = $facebook->api('/' + $userId); ?>
        Welcome <?= $userInfo['name'] ?>
    <?php } else { ?>
        <div id="fb-root"></div>
        <fb:login-button></fb:login-button>
    <?php } ?>
        <script type="text/javascript">
            window.fbAsyncInit = function() {
                FB.init({
                    appId      : '<?= YOUR_APP_ID ?>',
                    status     : true, 
                    cookie     : true,
                    xfbml      : true,
                    oauth      : true,
                });

                FB.Event.subscribe('auth.login', function(response) {
                    //window.location.reload();
                });
            };

            (function(d){
                var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
                js = d.createElement('script'); js.id = id; js.async = true;
                js.src = "//connect.facebook.net/en_US/all.js";
                d.getElementsByTagName('head')[0].appendChild(js);
            }(document));
        </script>
        <br />
        <br />
        <a href="<?php echo $_SERVER['PHP_SELF']."?msg=logout"; ?>">Logout</a>
4

1 に答える 1

2

以下の質問に対する答えを見つけました。1.ログアウトしてログインをクリックすると、Facebookのログイン画面が開きません。

Facebook の Cookie は削除されていないか、starage から削除されていないと言えます。このために、以下のjavascriptを使用しました

    
    関数 removeCookie( 名前、パス、ドメイン) {

        if ( getCookie( 名前 ) )

        {

            document.cookie = name + '=' + ( ( path ) ? ';path=' + path: '') + ( ( domain ) ? ';domain=' + domain : '' ) + ';expires=Thu, 1970 年 1 月 1 日 00:00:01 GMT';

        }

    }

わたしにはできる。

2.ログアウトしてページを更新すると、ログインの詳細が再び表示されます。そしてログインボタンが消えます。

上の質問と同じ理由です。

3.上記の 2 つの点が解決された場合、Web サイト全体でログイン セッションを維持する方法を教えてください。

セッションで fb id を維持し、ログアウトのリクエストが来たときに Cookie を削除してセッションを破棄します。

于 2012-12-21T10:27:25.103 に答える