2011-01-20 9 views
9

這個問題類似於How can I specifiy what access I need from my user's Facebook accounts when using OmniAuth?但有一個警告。如何指定Facebook權限(又名作用域)OmniAuth要求動態?

我使用OmniAuth授權Facebook用戶在我的網站。對於常規登錄/註冊,向用戶詢問標準的Facebook權限是可以接受的。但是我的網站上有一項功能需要擴展權限(訪問他們的Facebook照片)。我想只在用戶使用我們網站的Facebook照片功能時纔要求擴展用戶權限。

我如何設置的Facebook權限omniauth處理只是增加一個作用域選項中你OmniAuth初始化,像這樣在網絡上找到所有答案:

ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Facebook, 'app_id', 'app_secret', {:scope => 'email,offline_access,the,scope,you,want} 

但我需要定義範圍這樣只有當用戶使用照片功能時纔會被要求提供照片權限,但是如果他們只是第一次登錄或註冊,則不會。

任何人都知道如何做到這一點?提前致謝。

回答

11

你可能已經想出了一個解決這個問題了,不過我想我會附和那些仍在尋找解決這個問題。我的解決方案允許您預先請求儘可能少的Facebook權限,然後根據您的應用程序需要動態請求它們。

http://www.mikepackdev.com/blog_posts/2-Dynamically-Requesting-Facebook-Permissions-with-OmniAuth

希望這有助於!

+0

謝謝,邁克!非常感謝。我將這件事轉發給了一些我認爲可能需要的人。 – 2011-04-30 04:58:48

-1

我認爲你不能做正常。因爲你不能確定你的用戶只使用照片功能。您的用戶可以訪問您的應用程序照片功能和其他功能的所有部分。當用戶登錄並從您的照片功能切換到其他功能時,您不能要求它重新登錄。訪問這個其他功能。

所有的用戶並不真正檢查什麼樣的訪問他們的授權,所以不用擔心很多許可要求。

+0

當我的用戶點擊鏈接,用我的照片功能,很容易讓我送他們到/ auth /中的Facebook(即使它們已經登錄)和它重定向到照片頁面,如果正確的權限有得到了。當他們點擊鏈接時,問題正在改變{:scope =「」},然後在完成後回到{:scope =「」}。我需要如果以及如何在這樣的應用程序初始化後設置範圍。 這是一個重大的網站,這樣會因爲所需要的SIGIN照片權限轉走在登錄用戶的%是一個相當大的關注。 – 2011-01-20 20:40:14