我整合了圖形API Facebook的連接,但如果我們登錄到Facebook上,我們會自動登錄到與Facebook網站連接爲好。有沒有辦法讓用戶點擊fb「登錄」,只有用戶通過他們的fb帳戶連接到網站?Facebook連接禁用自動登錄
現在用戶自動登錄到該網站沒有選項來選擇他們是否希望用自己的Facebook帳戶。如果他們想從網站註銷,他們需要從Facebook完全註銷,然後才能通過Facebook連接從網站註銷。
任何人都可以幫助我或者給一些提示如何去? 謝謝!
我整合了圖形API Facebook的連接,但如果我們登錄到Facebook上,我們會自動登錄到與Facebook網站連接爲好。有沒有辦法讓用戶點擊fb「登錄」,只有用戶通過他們的fb帳戶連接到網站?Facebook連接禁用自動登錄
現在用戶自動登錄到該網站沒有選項來選擇他們是否希望用自己的Facebook帳戶。如果他們想從網站註銷,他們需要從Facebook完全註銷,然後才能通過Facebook連接從網站註銷。
任何人都可以幫助我或者給一些提示如何去? 謝謝!
我在最近的網站上遇到了同樣的問題,並找到了解決方法。我的解決方案允許用戶在他們的計算機上已經登錄Facebook,但沒有在我的網站上自動登錄,然後他們可以用Facebook登錄按鈕登錄,最後當他們註銷時,他們不會在他們的計算機上將他們登出Facebook ,就在我的網站上(很像Digg與Facebook一樣)。
要做到這一點,我用https://github.com/facebook/php-sdk/是否有與用戶和網站(這將導致自動登錄)活躍的Facebook會話中的PHP檢查。如果有,我也不會附和自動登錄代碼:
FB.init({ appId : '<?php echo $facebook->getAppId(); ?>', session : <?php echo json_encode($session); ?>, // don't refetch the session when PHP already has it status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); FB.Event.subscribe('auth.login', function() { window.location = "process-login.php"; });
而是隻呈現我自己的Facebook登錄按鈕將鏈接到「過程的login.php」。 process-login.php會設置自定義$ _SESSION變量,告訴我的網站有人被記錄(無論是通過我自己的系統還是通過Facebook),然後重新加載引用頁面(使用$ _SERVER ['HTTP_REFERER'] )現在將顯示用戶通過Facebook登錄,因爲我現在設置了自己的$ _SESSION變量。要註銷它們(沒有完全從Facebook註銷它們,只是我的網站),我只會加載一個註銷腳本來刪除$ _SESSION變量。
的使用example.php(在github上的PHP SDK)是在發現我的解決方案非常有幫助的,雖然我不得不顯著定製,以使其與我現有的系統中工作。它至少幫助我瞭解如何訪問PHP中的facebook會話變量(在示例中存儲在$ me中)。
希望這有助於你如果還是有問題的,或者說,它可以幫助別人在這種情況下其他人。
編輯: 原來我很少遇到一些自動登錄的問題。爲了解決這個問題,我刪除了event.subscribe('auth.login')並創建一個名爲以下函數的Facebook按鈕,以便在訂閱auth.login之前檢查登錄狀態。下面是函數:
function check_login_session(){ FB.getLoginStatus(function(r){ if(r.session){ window.location = '/process-login.php'; } else{ FB.Event.subscribe('auth.login', function(response) { window.location = '/process-login.php'; }); FB.login(); } }); }`
你好親愛的我認爲你已經讓你的問題如此困惑。你的問題沒有說明你想要什麼。至於我的理解,我認爲你想通過Facebook連接將用戶連接到你的網站,當用戶點擊Facebook註銷時,它會自動從你的網站註銷。 如果我對您的問題的理解是正確的,那麼只需讓用戶通過Facebook登錄並在您的系統中登錄FB.Event.Subscribe事件即可。 使用下面的代碼登錄按鈕
<fb:login-button perms='email' autologoutlink='true'>
當用戶將讓你對他的Facebook帳戶與您的網站
<div id="fb-root"> <script> window.fbAsyncInit = function() { FB.init({appId: "Your APP ID", status: true, cookie: true, xfbml: true}); FB.getLoginStatus(function(response) { if (response.session) { // Send here parameters that logins to your system through your website login system } else { } }); FB.Event.subscribe("auth.login", function(response) { window.location.reload(); }); FB.Event.subscribe("auth.logout", function(response) { window.location.reload(); //Send the Parameters that logouts user from your website through your website logout system; }); }; (function() { var e = document.createElement("script"); e.type = "text/javascript"; e.src = document.location.protocol + "//connect.facebook.net/en_US/all.js"; e.async = true; document.getElementById("fb-root").appendChild(e); }());
連接,並把上面的整個代碼的< body>標籤之後
如果您有:
FB.Event.subscribe('auth.login', function() {
fbLogin(this);
});
試評它/ * fb.Event ..... */
我有同樣的問題,我想你正在使用facebook提供的腳本。在這種情況下,你有一個與window.fbAsyncInit事件相關的函數。每次頁面加載時都會發生這種情況。 在這個方法結束你的代碼:
FB.getLoginStatus(function(response) { statusChangeCallback(response); });
功能statusChangeCallback驗證用戶的Facebook狀態(連接,授權或未知)。在這裏,如果用戶「連接」,則將他登錄到您的網站。那麼這就是問題所在,你總是試圖用facebook登錄用戶。
這隻能發生在點擊,所以你應該刪除這些線路
和抱歉,如果我沒有達到您的問題:-) – 2011-01-20 12:26:18