检查权限和重定向会产生err_to_many_redirects



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

$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作为参数?

为什么不只在用户执行需要扩展权限的操作时才提示用户允许扩展权限(或任何权限)
这里有一个SO问题的链接,详细介绍了如何使用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>";

相关内容

最新更新