9

此问题类似于使用 OmniAuth 时如何指定我需要从用户的 Facebook 帐户获得的访问权限?但有一个警告。

我正在使用 OmniAuth 在我的网站上授权 Facebook 用户。对于常规登录/注册,要求用户提供标准 Facebook 权限是可以接受的。但是我的网站上有一项功能需要扩展权限(访问他们的 Facebook 照片)。我只想在/如果他们使用我们网站的 Facebook 照片功能时为用户请求扩展权限。

我在网上找到的关于如何为omniauth 设置facebook 权限的所有答案只需在您的OmniAuth 初始化程序中添加一个范围选项,如下所示:

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

但是我需要动态定义范围,这样只有当用户使用照片功能时,他们才会被要求提供照片权限,但如果他们只是第一次登录或注册,则不会。

有人知道怎么做吗?提前致谢。

4

3 回答 3

11

你可能已经想出了解决这个问题的方法,但我想我会为那些仍在寻求解决这个问题的人提供帮助。我的解决方案允许您预先请求尽可能少的 Facebook 权限,然后在您的应用需要时动态请求它们。

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

希望这可以帮助!

于 2011-04-29T06:06:24.843 回答
5

看起来他们正在将它添加到 Omniauth,但它仍处于测试阶段。

你添加一个

:setup => true

到您的提供者,然后创建一个方法,您可以在其中动态设置所需的选项(凭据/范围)。

https://github.com/intridea/omniauth/wiki/Setup-Phase

https://github.com/intridea/omniauth/wiki/Dynamic-Providers

于 2011-03-07T16:51:19.670 回答
-1

我认为你不能正确地做到这一点。因为您不能确定您的用户只使用照片功能。您的用户可以访问您应用程序照片功能和其他功能的所有部分。当用户登录并从您的照片功能切换到其他功能时,您不能要求它重新登录。访问此其他功能。

所有用户都不会真正检查他们授权的访问类型,所以不要担心很多权限要求。

于 2011-01-20T20:26:19.163 回答