2012-11-23 63 views
0

我在此頁面上使用的是Facebook的服務器端身份驗證。具有部分權限的Facebook服務器端身份驗證

https://developers.facebook.com/docs/howtos/login/server-side-login/#step5

我要求像user_birthday擴展權限,如果用戶接受,我得到的代碼

YOUR_REDIRECT_URI? 
state=YOUR_STATE_VALUE 
&code=CODE_GENERATED_BY_FACEBOOK 

但如果假設用戶拒絕提供的生日,我還是想當我得到這個URL

YOUR_REDIRECT_URI? 
error_reason=user_denied 
&error=access_denied 
&error_description=The+user+denied+your+request. 
&state=YOUR_STATE_VALUE 

有誰知道如何獲取代碼情景下或做我必須要求用戶簽到一個進行獲得,但這次不要求額外的權限?

乾杯, 史蒂夫

回答

0

有誰知道如何獲取代碼情景下或做我必須要求用戶再次簽到,但這次不要求額外的權限?

有兩種情況在這裏:

  • 你要求的用戶連接到您的應用程序的第一次。在這一點上,他們不能拒絕給你user_birthday權限單獨(因爲它是一個基本的權限,而不是一個擴展權限) - 他們要麼連接到你的應用程序,要麼不連接到你的應用程序。

  • 用戶已連接到您的應用程序之前,現在您要求user_birthday權限。如果用戶拒絕,那將導致error_reason=user_denied - 然後您將不會收到code參數。

在第二個方案中,使用服務器端的流量時,再次要求用戶(可能與權限的設定降低)是唯一的出路 - 除非你已經令牌之前得到的訪問。這不會失效 - 但它顯然只包含之前已經給出的權限。 (如果用戶連接到您的應用程序之前,您可以根本不調用範圍參數調用Auth對話框 - 在這種情況下,Facebook將使用代碼參數直接重定向到您的應用程序,或者您可以獲得令牌例如通過調用FB.getLoginStatus。)

+0

用戶可以限制用戶的生日在他們的配置文件中。在這種情況下,即使用戶點擊允許服務器仍然會得到user_denied。 – stevew

相關問題