2

我的页面标签中有一个 Facebook 应用程序。当用户访问它时,他们被要求获得访问其基本个人资料数据和朋友列表的权限。如果用户在权限对话框中单击“取消”,他们将被重定向回我的应用程序。它创建了一个无限循环,Facebook 检测到该循环并显示应用程序不符合 Facebook 政策的消息。我了解到redirect_uri无论用户接受还是拒绝权限都是一样的。我正在寻找一种方法来检测用户已拒绝(单击“取消”)并将它们重定向到其他地方以避免无限循环。我试图理解 Facebook 的文档,但它无处不在 :(

这是我的一些代码...

$loginUrl   = $facebook->getLoginUrl(array(
"redirect_uri"=>"https://www.facebook.com/pages/".$truepageid."/".$truepageid."?sk=app_xxxxxxxxxxxx"

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    //you should use error_log($e); instead of printing the info on browser
    d($e);  // d is a debug function defined at the end of this file
    $user = null;

  }
}

if (!$user) {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
    exit;
}
4

1 回答 1

2

您应该error_reason在返回 uri 中获得一个 GET-Param,其中包含一些信息,例如“user_denied”,您可以查询这些信息以防止无限循环

if (isset($_GET['error_reason']) && $_GET['error_reason'] == 'user_denied') {
    // dont redirect to login page
}
else
{
    // redirect to fb-login
}
于 2013-07-16T21:22:02.270 回答