【问题标题】:Checking for permission and redirecting gives err_too_many_redirects?检查权限和重定向会给出 err_too_many_redirects?
【发布时间】:2012-01-07 13:37:02
【问题描述】:

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

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

【问题讨论】:

    标签: facebook redirect permissions


    【解决方案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>";
    

    【讨论】:

    • 您对“应用程序需要该权限”是正确的,但这是我的测试代码的一部分,我想知道当 if 语句返回 true 时如何提示权限框。简单的呼应“给我们正确的权限”就可以了。我使用与用户第一次访问相同的 $login_url_parms。
    • 尝试从您的 while 语句中删除您的 $facebook-&gt;getLoginUrlheaderexit 调用。在其中放置一个 $has_all_perms 标志,并在其中放置一个 break; 语句。然后在wile loop 结束后检查。
    • 嗯,我将如何提示许可? if($has_all_perms == 0) { $login_url = $facebook-&gt;getLoginUrl($login_url_params); header("Location: {$login_url}"); exit(); } 给出同样的错误
    • 我在上面的回答中添加了一个建议。
    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2016-11-02
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多