Facebook graph api 具有部分权限的Facebook服务器端身份验证

Facebook graph api 具有部分权限的Facebook服务器端身份验证,facebook-graph-api,Facebook Graph Api,我正在使用本页详细介绍的Facebook服务器端身份验证 我请求像user_birth这样的扩展权限,如果用户接受,我就会得到代码 YOUR_REDIRECT_URI? state=YOUR_STATE_VALUE &code=CODE_GENERATED_BY_FACEBOOK 但是如果假设用户拒绝提供生日,我仍然希望在得到这个url后继续 YOUR_REDIRECT_URI? error_reason=user_denied &error=access_denied &a

我正在使用本页详细介绍的Facebook服务器端身份验证

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

YOUR_REDIRECT_URI?
state=YOUR_STATE_VALUE
&code=CODE_GENERATED_BY_FACEBOOK
但是如果假设用户拒绝提供生日,我仍然希望在得到这个url后继续

YOUR_REDIRECT_URI?
error_reason=user_denied
&error=access_denied
&error_description=The+user+denied+your+request.
&state=YOUR_STATE_VALUE
是否有人知道如何获取该场景下的代码,或者我是否必须要求用户再次登录,但这次不要求其他权限

干杯, 史蒂夫

是否有人知道如何获取该场景下的代码,或者我是否必须要求用户再次登录,但这次不要求其他权限

这里有两种情况:

  • 您正在要求用户第一次连接到您的应用程序。在这一点上,他们不能拒绝仅授予您
    用户生日
    权限(因为这是一个基本权限,而不是扩展权限)-他们要么连接到您的应用程序,要么不连接

  • 用户以前已连接到你的应用程序,现在你正在请求
    user\u birth
    权限。如果用户拒绝,将导致
    错误\u原因=user\u拒绝
    –然后您将无法获得
    code
    参数

在第二个场景中,当使用服务器端流时,再次询问用户(可能权限集减少)是唯一的方法,除非您之前已经获得了访问令牌。这不会失效,但它显然只包含以前已授予的权限


(如果用户以前连接过你的应用程序,你只需调用Auth对话框,而不需要任何范围参数——在这种情况下,Facebook将直接使用代码参数重定向回你的应用程序。或者你也可以通过调用FB.getLoginStatus等方式,提前从客户端获取令牌。)

用户可以在其个人资料中限制用户的生日。在这种情况下,即使用户单击“允许”,服务器仍会拒绝用户。