2012-04-03 191 views
0

我想使用Facebook作爲我的應用程序(網站)用戶的身份驗證源。我不希望我的應用程序擁有除基本和電子郵件權限之外的任何內容。因此,我的應用程序不能發佈到用戶的牆上。換句話說,我想限制範圍參數的允許值集合,我希望在應用程序的配置頁面(在Facebook網站上)發生這種限制。如何限制OAuth'scope'參數的允許權限(限制範圍)

通常情況下,這很容易,只需爲OAuth URL /調用的範圍參數指定'email'即可。

但是在這種情況下還有另外一個因素,這就是:黑客可能訪問應用程序並更改OAuth調用以指定更多權限。然後,毫無戒心的用戶通常(或至少可能)授予這些權限,黑客將能夠獲取OAuth令牌並代表該用戶執行操作。

我沒有興趣討論這個問題的原因,只是發現有一種方法可以指定我的應用程序只能爲範圍參數使用特定的一組值。理想情況下,此範圍限制的規範可在Facebook本身的應用程序配置頁面中完成。

但是,我對涉及使用SAML,OpenID或其他一些僅用於身份驗證的機制(即使無法獲取用戶電子郵件地址)的替代解決方案感興趣。我對使用RPX不感興趣。

請注意:這是一個複雜的問題,不是一個簡單的問題。我已經搜索了很多答案,並且剛剛發現這個問題恰恰相反。

回答

0

我很確定無法在應用程序配置級別限制範圍。

我想說最簡單的解決方法是在註冊時查詢用戶的權限,檢查它們是否與允許的權限匹配,並訂閱(權限實時更新)[http://developers.facebook.com /文檔/參考/ API /實時/]。您的應用程序將收到授予用戶權限更改的通知。

這應該允許您通過應用程序邏輯阻止任何服務器端API調用,或(禁止)[https://developers.facebook.com/docs/reference/api/application/#banned]升級權限的用戶。

+0

有趣的想法。查看實時文檔,它看起來像發送更改請求,但不是用戶第一次授權應用程序。 – 2012-04-04 18:31:29

+0

您可以使用/ me /權限檢查第一次。所以,確認他們是正確的,實時將確保他們*保持正確。 – 2012-04-04 21:17:29