0

すべてのページに facebook ログイン ボタンがあり、facebook SDK をロードします。

これは、FB をロードするための私の JS コードです。

window.fbAsyncInit = function() {
        FB.init({
          appId   : 129837912837129837128937, //fake id
      channelUrl : '//www.example.com/channel.php', // Channel File
          status  : true, // check login status
          cookie  : true, // enable cookies to allow the server to access the session
          xfbml   : true, // parse XFBML
          oath    : true
        });
// Load the SDK Asynchronously
  (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));

問題の再現:

1) ログアウト リンクを使用して、サイト内の facebook からログアウトします。Facebook.com もログアウトされます。ここまでは順調です。私のサイトでは、ユーザーがログアウトしました。

2) ユーザーは、ある時点で facebook.com にアクセスしてログインします。ユーザーは、Cookie を使用してセッションを維持します。

3) その後、彼はリンク /page.php?5&sdasda&asdad またはその他の非ホームページ リンクで私のサイトに直接アクセスし、ページが完全に読み込まれます (最大 1 ~ 2 秒の遅延がある FB ログイン ボタンを除く)。

4) 最終的に FB ログイン ボタンが読み込まれると、FB js は、ユーザーが既に facebook.com にログインしていることを検出し (手順 2 で取得した fb cookie を参照)、ルート (www.mydomain) にリダイレクトしてユーザーを「ログイン」しようとします。 .com) であり、現在のページを更新しません。

これは私のログインボタンがどのように見えるかです:

<div class="fb-login-button fb_iframe_widget " scope="status_update,email,user_birthday,read_stream,publish_stream,share_item"></div>

次のようにレンダリング:レンダリングされた Facebook ログイン ボタン

これは正常な動作ですか?そもそも私は何か間違ったことをしていますか?これを修正するものはありますか?

4

0 に答える 0