具有部分权限的Facebook服务器端认证

时间:2012-11-23 07:48:59

标签: facebook-graph-api

我在本页详细介绍了Facebook的服务器端身份验证。

https://developers.facebook.com/docs/howtos/login/server-side-login/#step5

我要求像user_birthday这样的扩展权限,如果用户接受,我会得到代码

YOUR_REDIRECT_URI?
state=YOUR_STATE_VALUE
&code=CODE_GENERATED_BY_FACEBOOK

但如果让我们说用户拒绝提供生日,我仍然希望在获得此网址时继续

YOUR_REDIRECT_URI?
error_reason=user_denied
&error=access_denied
&error_description=The+user+denied+your+request.
&state=YOUR_STATE_VALUE

有没有人知道如何在这种情况下获取代码,或者我是否必须要求用户再次登录,但这次没有要求额外的权限?

干杯, 史蒂夫

1 个答案:

答案 0 :(得分:0)

  

有没有人知道如何在这种情况下获取代码,或者我是否必须要求用户再次登录,但这次没有要求额外的权限?

这里有两种情况:

  • 您要求用户首次连接到您的应用。此时,他们不能拒绝仅仅授予您user_birthday权限(因为它是基本的而非扩展权限) - 他们要么连接到您的应用,要么不连接。

  • 用户之前已连接到您的应用,现在您要求user_birthday权限。如果用户拒绝,则会导致error_reason=user_denied - 然后您将无法获得code参数。

在第二种情况下,当使用服务器端流程时,再次询问用户(可能具有减少的权限集)是唯一的方法 - 除非您之前已经获得了访问令牌。这不会失效 - 但它显然只包含之前已经给出的权限。

(如果用户以前连接到您的应用程序,您可以只调用没有范围参数的Auth对话框 - 在这种情况下,Facebook将使用代码参数直接重定向到您的应用程序。或者您可以事先获得令牌客户端,例如通过调用FB.getLoginStatus。)

相关问题