2012-11-23 66 views
0

我在此页面上使用的是Facebook的服务器端身份验证。具有部分权限的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 

但如果假设用户拒绝提供的生日,我还是想当我得到这个URL

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

有谁知道如何获取代码情景下或做我必须要求用户签到一个进行获得,但这次不要求额外的权限?

干杯, 史蒂夫

回答

0

有谁知道如何获取代码情景下或做我必须要求用户再次签到,但这次不要求额外的权限?

有两种情况在这里:

  • 你要求的用户连接到您的应用程序的第一次。在这一点上,他们不能拒绝给你user_birthday权限单独(因为它是一个基本的权限,而不是一个扩展权限) - 他们要么连接到你的应用程序,要么不连接到你的应用程序。

  • 用户已连接到您的应用程序之前,现在您要求user_birthday权限。如果用户拒绝,那将导致error_reason=user_denied - 然后您将不会收到code参数。

在第二个方案中,使用服务器端的流量时,再次要求用户(可能与权限的设定降低)是唯一的出路 - 除非你已经令牌之前得到的访问。这不会失效 - 但它显然只包含之前已经给出的权限。 (如果用户连接到您的应用程序之前,您可以根本不调用范围参数调用Auth对话框 - 在这种情况下,Facebook将使用代码参数直接重定向到您的应用程序,或者您可以获得令牌例如通过调用FB.getLoginStatus。)

+0

用户可以限制用户的生日在他们的配置文件中。在这种情况下,即使用户点击允许服务器仍然会得到user_denied。 – stevew

相关问题