检查权限和重定向会给出err_too_many_redirects吗?

时间:2012-01-07 13:37:03

标签: facebook redirect permissions

我正在使用一些额外的代码调整我的应用程序,例如检查用户是否允许我们需要的权限(可能是他在第一次访问后更改了它)。

$permissions_needed = array('publish_stream,read_stream');
foreach($permissions_needed as $perm) {
   if( !isset($permissions_list['data'][0][$perm]) || $permissions_list['data'][0][$perm] != 1 ) {
      $login_url_params = array(
         'scope' => 'publish_stream,read_stream',
         'fbconnect' =>  1,
         'next' => 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
        //redirect_uri => 'https://www.mydomain.com/fb_app/'
      );
      $login_url = $facebook->getLoginUrl($login_url_params);
      header("Location: {$login_url}");
      exit();
   }

我该如何解决这个问题?何时使用next vs redirect_uri作为params?

1 个答案:

答案 0 :(得分:1)

为什么不提示您的用户仅在执行需要该权限的操作时才允许扩展权限(或任何权限)?
以下是SO Question的链接,详细说明了如何使用Facebook JS SDK请求权限。

如果您的使用删除了某个权限,可能是因为他/她不知道您的应用程序为何需要该权限。通过仅在用户执行该操作时请求权限,并且可能包括对您请求此权限的原因的简短说明,用户可能倾向于重新允许您的应用程序获得辩论的许可。

修改 对于重定向,我通常使用JS重定向。像这样:

$url = $facebook->getLoginUrl(array(
      'req_perms' => implode(",",$requiredPermissions), 
      'fbconnect' =>  1,
      'redirect_uri' =>'YOUR_URL'
    ));
echo "<script language=javascript>";
echo "top.location.href = '".$url."';";
echo "</script>";