2013-11-15 30 views
2

我有一個使用omniauth用Facebook驗證用戶的應用程序。我正在獲取我需要的所有數據,包括訪問令牌。我正在使用考拉寶石與Facebook的圖形API進行交流,這是正常工作。所以,我有以下幾點:要使用常規的考拉命令考拉 - 用facebook身份驗證時未詢問user_photos權限

models/authentication.rb 
def facebook 
@facebook ||= Koala::Facebook::API.new(oauth_token) 
end 

正常工作:

facebook.get_object("me") etc etc 

我現在想使用類似的用戶照片來拉:

facebook.get_object("me/photos") 

這只是返回一個空數組。所以我研究過它並意識到我需要在Facebook開發人員網站上設置權限/用戶&朋友權限。然而這似乎沒有任何影響,因爲當我運行時:

facebook.get_connections("me", "permissions") 

我沒有看到返回的數組中的user_photos權限。

這是我認爲是造成這個問題,但不知道爲什麼它不通過。

請讓我知道,如果有任何其他信息,我可以提供。 任何幫助將不勝感激。非常感謝

回答

3

當您從應用程序的Facebook獲得oauth令牌時,您應該請求適當的權限,例如,OmniAuth使用的代碼將read_streamuser_photos權限設置爲對用戶的請求。該文件是config/initializers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, :setup => true, :scope => 'read_stream, user_photos' 
end 
+0

這樣做的伎倆,應該想到它。非常感謝。只要我有足夠的代表點,我會立即投票回答。 –

+0

+100分用facebook/g +/etc登錄 –

+0

@МалъСкрылевъ:我們還應該提到FB app_id和secret_key,之後提供者:facebook和之前:scope,對吧?即它應該是'provider:facebook,ENV ['FB_APP_ID'],ENV ['FB_SECRET_KEY'],{:scope =>「user_photos」}'。在登錄後Rails應用程序仍然不會要求用戶照片的權限。在Facebook的開發人員網站上進行的任何設置? – rAzOr