2012-04-03 145 views
0

我想使用Facebook作为我的应用程序(网站)用户的身份验证源。我不希望我的应用程序拥有除基本和电子邮件权限之外的任何内容。因此,我的应用程序不能发布到用户的墙上。换句话说,我想限制范围参数的允许值集合,我希望在应用程序的配置页面(在Facebook网站上)发生这种限制。如何限制OAuth'scope'参数的允许权限(限制范围)

通常情况下,这很容易,只需为OAuth URL /调用的范围参数指定'email'即可。

但是在这种情况下还有另外一个因素,这就是:黑客可能访问应用程序并更改OAuth调用以指定更多权限。然后,毫无戒心的用户通常(或至少可能)授予这些权限,黑客将能够获取OAuth令牌并代表该用户执行操作。

我没有兴趣讨论这个问题的原因,只是发现有一种方法可以指定我的应用程序只能为范围参数使用特定的一组值。理想情况下,此范围限制的规范可在Facebook本身的应用程序配置页面中完成。

但是,我对涉及使用SAML,OpenID或其他一些仅用于身份验证的机制(即使无法获取用户电子邮件地址)的替代解决方案感兴趣。我对使用RPX不感兴趣。

请注意:这是一个复杂的问题,不是一个简单的问题。我已经搜索了很多答案,并且刚刚发现这个问题恰恰相反。

回答

0

我很确定无法在应用程序配置级别限制范围。

我想说最简单的解决方法是在注册时查询用户的权限,检查它们是否与允许的权限匹配,并订阅(权限实时更新)[http://developers.facebook.com /文档/参考/ API /实时/]。您的应用程序将收到授予用户权限更改的通知。

这应该允许您通过应用程序逻辑阻止任何服务器端API调用,或(禁止)[https://developers.facebook.com/docs/reference/api/application/#banned]升级权限的用户。

+0

有趣的想法。查看实时文档,它看起来像发送更改请求,但不是用户第一次授权应用程序。 – 2012-04-04 18:31:29

+0

您可以使用/ me /权限检查第一次。所以,确认他们是正确的,实时将确保他们*保持正确。 – 2012-04-04 21:17:29