如何指定OmniAuth动态请求的Facebook权限(又称范围)?

Sea*_*ens 9 ruby-on-rails facebook-graph-api omniauth

这个问题类似于如何在使用OmniAuth时指定用户的Facebook帐户需要哪些访问权限?但有一个警告.

我正在使用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}
Run Code Online (Sandbox Code Playgroud)

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

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

Mik*_*ike 11

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

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

希望这可以帮助!


joh*_*ire 5

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

你添加一个

:setup => true
Run Code Online (Sandbox Code Playgroud)

到您的提供程序,然后创建一个方法,您可以动态设置所需的选项(凭据/范围).

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

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