2011-09-28 90 views
1

在我們的應用程序中,我們有一些操作需要用戶在繼續之前重新進行驗證。我們使用下面的代碼來實現這一點。OAuth 2.0更改爲sdk後,如何在Facebook上重新進行身份驗證?

FB.login(
    function(response) { /* code here */ }, 
    {auth_type: 'reauthenticate', auth_nonce: '...'} 
); 

它看起來像AUTH_TYPE選項不再支持,因爲我得到以下日誌消息:「的FB.login()時,用戶已連接稱爲」並且用戶沒有被要求重新認證。

有沒有人有任何想法如何在OAuth 2.0更改後重新進行身份驗證?

回答

0

您可以使用iframe來確保cookie始終有效。

facebook auto re-login from cookie php

+0

這並不完成我所需要的。設置auth_type reauthenticate會呈現給用戶Facebook用戶名和密碼對話框,我們在執行某些操作之前使用它來提高安全性 –

+0

然後,您可以定期註銷他,然後重新登錄他,這將顯示對話框,否? – Uri

+0

如果註銷用戶所有生成的令牌將會失效,這可能會導致問題。 – ale500

3

看來,暫時的(我有資格說因爲Facebook似乎改變心血來潮他們的API響應),你可以得到AUTH_TYPE:重新認證後才能正常工作,如果您還指定權限( OAuth 2.0中的範圍參數)。看看這個例子:

http://www.fbrell.com/saved/a78ba61535bbec6bc7a3136a7ae7dea1

在這個例子中,單擊運行代碼,然後嘗試 「的FB.login()」 和 「的FB.login()與權限」 按鈕。兩者都編碼爲使用AUTH_TYPE:重新驗證,但只有後者實際上是給你的FB提示,一旦你登錄

以下是相關的例子:

// DOES NOT PROMPT 
document.getElementById('fb-login').onclick = function() { 
    FB.login(
    function(response) { 
     Log.info('FB.login callback', response); 
    }, 
    { auth_type: 'reauthenticate' } 
); 
}; 

// PROMPTS AS EXPECTED 
document.getElementById('fb-permissions').onclick = function() { 
    FB.login(
    function(response) { 
     Log.info('FB.login with permissions callback', response); 
    }, 
    { scope: 'offline_access', auth_type: 'reauthenticate' } 
); 
}; 

所以,答案是肯定的, auth_type:重新驗證是否可以工作,但只有在您還指定了有效的作用域參數時纔有效。 (是的,我嘗試了一個空的示波器,它的行爲與未使用示波器相同。)

0

使用FacebookRedirectLoginHelper :: getReAuthenticationUrl一切正常。 內部方法把'auth_type'=>'reauthenticate'並且傳遞所有需要的權限。

現在的問題是,只有提示用戶重新輸入密碼,而沒有可能在用戶之間「切換」或沒有插入用戶名的可能性。

有人找到了解決此問題的解決方案嗎? 我管理一個應用程序與多個帳戶,當用戶需要再次生成令牌時,這是一個問題:( 謝謝,亞歷克斯。

相關問題