すべてのページに 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>
次のようにレンダリング:
これは正常な動作ですか?そもそも私は何か間違ったことをしていますか?これを修正するものはありますか?