【问题标题】:Koala - user_photos permission not asked for when authentication with facebookKoala - 使用 facebook 进行身份验证时未要求 user_photos 权限
【发布时间】:2025-12-09 01:00:02
【问题描述】:

我有一个应用程序使用omniauth 对Facebook 用户进行身份验证。我正在获取我需要的所有数据,包括访问令牌。我正在使用 Koala gem 与运行良好的 Facebook 图形 API 进行通信。所以我有以下内容:

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

所以使用常用的 koala 命令可以正常工作:

facebook.get_object("me") etc etc

我现在想使用以下方式提取用户照片:

facebook.get_object("me/photos")

这只是返回一个空数组。所以我研究了一下,意识到我需要在 Facebook 开发者网站的权限/用户和朋友权限下设置权限。但是,这似乎对我运行时没有任何影响:

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

我在返回的数组中没有看到 user_photos 权限。

我认为这是导致问题的原因,但不确定为什么它没有通过。

如果我可以提供任何其他信息,请告诉我。 任何帮助都感激不尽。非常感谢

【问题讨论】:

    标签: facebook facebook-graph-api gem koala


    【解决方案1】:

    当您从 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
    

    【讨论】:

    • 成功了,应该想到的。非常感谢。只要我有足够的代表点数,我就会投票给你的答案。
    • @МалъСкрылевъ:我们还应该提到 FB app_id 和 secret_key,在 provider :facebook 之后和 :scope 之前,对吗?即它应该是provider :facebook, ENV['FB_APP_ID'], ENV['FB_SECRET_KEY'],{:scope => "user_photos"}。 Rails 应用程序在登录后仍然不要求用户照片权限。要在 facebook 的开发者网站上进行任何设置吗?
    • @rAzOr 我相信您应该在使用新设置再次请求之前使密钥对过时。