2012-05-10 80 views
0

後我想自動登錄的用戶到我的網站誰已經讓我們的Facebook應用程序,最初我打算用:自動登錄Facebook的用戶接受權限

var cb = function(response) { 
    if (response.status === 'connected') { 
     FB.api('/me', function(response) { 
     $.post(url, { 'op':'facebook','name':response['name'],'id':response['id'],'email':response['email']}, 
      function(data) { 
       parent.location.reload(); 

      }); 
     }); 
    } else { 
     alert('You are not logged in'); 
    } 
    }; 
    FB.login(cb, { scope: 'publish_actions,publish_stream,read_stream,email' }); 

雖然使用它打開一個網站彈出式窗口,在以這種自動方式完成時會被很多彈出窗口阻止程序和瀏覽器阻止,並且還會顯示給沒有允許我們的應用程序的用戶。

我希望它是descretely做,但我不知道如何:S

如果有人能告訴我如何記錄他們在使用JavaScript將是巨大的:)

回答

1

地提示用戶登錄應該取決於用戶生成的事件,如點擊一個元素。大多數瀏覽器都會阻止嘗試自動打開新窗口,除非用戶有足夠的信心請求執行操作。

如果您希望在加載您的頁面時自動檢測訪問者的登錄狀態,您應該掛接Javascript SDK(「auth.authResponseChange」,「auth.login」等)公開的各種auth事件,或者使用「FB.getLoginStatus」方法手動請求訪問者的狀態。你可以閱讀更多關於這些事件在https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

+0

我看了一下,它和我所擁有的非常相似,我仍然無法使用這些教程默默登錄用戶: ( –

+0

有一點需要注意的是,如果您只使用Javascript SDK檢測登錄用戶,請爲「[FB.init]」(http://developers.facebook.com)設置「status」參數/docs/reference/javascript/FB.init/)「方法爲true,這會提示Facebook在頁面加載時獲取用戶的登錄狀態,也可以將一個布爾標誌作爲第二個參數傳遞給FB.getLoginStatus, Facebook獲取用戶的登錄狀態,你的更新代碼是'FB.getLoginStatus(cb,true);' –

0

管理得到它的工作!再次閱讀Facebook教程,這是我想到的

window.onload=function(){ 
var url = "http://mysite.com/"; 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     FB.api('/me', function(response) { 
     $.post(url, { 'op':'facebook','name':response['name'],'id':response['id'],'email':response['email']}, 
      function(data) { 
       parent.location.reload(); 

      }); 
     }); 
    } 
    }); 
}; 
+0

這仍然不是很安全,只要記住某人可以從控制檯發送$ .post()與任何人的fbID/Name。我將authToken傳遞給我的應用程序,然後讓服務器獲得「/ me」 – Greg