这个问题类似于How can I specifiy what access I need from my user's Facebook accounts when using OmniAuth?,但有一点需要注意。
我正在使用OmniAuth在我的网站上授权Facebook用户。对于常规登录/注册,可以接受用户标准Facebook权限。但是我的网站上有一项功能需要扩展权限(访问他们的Facebook照片)。我想只在用户使用我们网站的Facebook照片功能时询问用户的扩展权限。
我在网上找到的关于如何为omniuth设置facebook权限的所有答案只需在OmniAuth初始化程序中添加范围选项,就像这样:
ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Facebook, 'app_id', 'app_secret', {:scope => 'email,offline_access,the,scope,you,want}
但是我需要动态定义范围,这样只有当用户使用照片功能时才会要求他们获取照片权限,但是如果他们只是首次登录或注册,则不会。
任何人都知道如何做到这一点?提前谢谢。
答案 0 :(得分:11)
你可能已经找到了这个问题的解决方案,但我想我会为那些仍在寻求解决这个问题的人提供帮助。我的解决方案允许您预先请求尽可能少的Facebook权限,然后在您的应用需要时动态请求它们。
http://www.mikepackdev.com/blog_posts/2-Dynamically-Requesting-Facebook-Permissions-with-OmniAuth
希望这有帮助!
答案 1 :(得分:5)
看起来他们正在向Omniauth添加它,但它仍处于测试阶段。
您添加
:setup => true
到您的提供商,然后创建一个方法,您可以动态设置所需的选项(凭据/范围)。
答案 2 :(得分:-1)
我认为你做不到这一点。因为您无法确定您的用户仅使用照片功能。您可以访问应用程序照片功能的所有部分和其他功能。当用户登录并从您的照片功能切换到其他功能时,您无法要求它重新记录。访问此其他功能。
所有用户都没有真正检查他们授权的访问权限,所以不要担心很多权限要求。