如果用户之前已批准对该应用程序的访问权限并提供了所有权限,那么facebook OAuth对话框会重定向回所提供的redirect_uri而不会出现提示...
我想覆盖该行为并强制对话框再次询问用户权限......
想知道是否可以这样做,因为文档没有提供关于这是否可行的帮助。
答案 0 :(得分:3)
我知道这是一篇过时的文章,但是我只是偶然发现它,并且因为我在其他地方找到了正确答案,所以我认为应该在这里发布。
您可以发送auth_type=reauthorize
。
AFAIK,auth_type
具有以下选项:
* reauthorize
始终具有权限
* rerequest
用于拒绝/撤销权限
* reauthenticate
始终以用户身份确认密码。
答案 1 :(得分:2)
正如@Igy已经提到的,您可以通过问题DELETE
请求撤消对me/permissions
端点的用户访问权限。其余的很简单:
FB.api('me/permissions', 'delete', function (r1) {
// FB.login relies on FB.getLoginStatus.
// Force reloading the login status.
FB.getLoginStatus(function (r2) {
FB.login(function (r3) {});
}, true);
});
答案 2 :(得分:1)
你为什么要这样做?让用户通过权限阶段是一个关键步骤,往往会损失大量流量。当显示弹出窗口时,无论如何都由Facebook完全管理,因此当他们已经完成时,不可能要求某人接受权限。他们再次看到请求的唯一时间是他们是否首先撤销权限,或者您的应用是否会提高所请求的访问权限。
答案 3 :(得分:0)
您可以致电auth.revokeAuthorization。不要担心它说其余的api已被弃用,因为目前没有图形api方法,我认为它们不会删除它直到有一个。
答案 4 :(得分:0)
我没有在Facebook API上使用OAuth,但如果我理解你的问题,这是你可以做到的一种方式:
如果用户之前已批准访问,则没有提示
当Facebook将用户重定向回您的应用程序(redirect_uri)时,您可以看到授权授权缺失,您可以判断该用户未批准您的请求。
强制对话框再次询问用户权限
然后您可以再次请求新令牌,但具有有限的令牌权限(范围访问受限,因为显然用户未批准您之前的范围请求),系统将再次要求用户使用新设置批准您的请求权限。这就是我这样做的方式,我认为这是大多数应用程序在用户首次拒绝其请求时执行此操作的方式。