Laravel + Facebook PHP SDK重新请求拒绝权限不起作用

时间:2015-10-19 07:21:18

标签: php facebook laravel facebook-graph-api facebook-php-sdk

我正在使用SammyK's laravel Facebook SDK PHP,我注意到auth_type=rerequest无效。当用户拒绝其中一个权限时,就会发生这种情况。假设我有'default_scope' => ['email', 'user_status', 'user_website'],当用户在权限响应中取消勾选电子邮件时,该电子邮件的状态将为“已拒绝”。

"permission" => "email"
"status" => "declined"

但如Facebook docs所述:

  

可以让某人一次授予他们拒绝的应用权限。你应该有一个教育屏幕,说明为什么你认为他们应该给你许可,然后重新询问。但是,如果您像以前一样调用登录对话框,它将不会要求该权限。

     

这是因为一旦有人拒绝了权限,登录对话框就不会重新询问它们,除非您明确告诉对话框您要求拒绝许可。

     

您可以通过将auth_type = rerequest参数添加到“登录对话框URL”来执行此操作:

所以在SammyK的服务中这样做:

$fb = App::make('SammyK\LaravelFacebookSdk\LaravelFacebookSdk');
$loginFacebook = $fb->getReRequestUrl([]); // leave it to blank to get default scope from config

有了这个,我的登录网址现在看起来像这样: https://www.facebook.com/v2.5/dialog/oauth?auth_type=rerequest&client_id={client_id}&state={state}&response_type=code&sdk=php-sdk-5.0.0&redirect_uri=http%3A%2F%2Fexample.local%2Fdater%2Flogin%2Fcallback&scope=email%2Cuser_status%2Cuser_website

请注意我已传递auth_type=rerequest的网址。 (不要介意其他参数,例如client_id和state,我只是在这里更改它以使其更短)。

当我取消电子邮件时,它不应该重定向回权限页面吗?因为目前,它仍然接受它,这使得电子邮件范围被拒绝并且应用程序被接受。

0 个答案:

没有答案