我的页面标签中有一个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;
}
答案 0 :(得分:2)
你应该在返回的uri中得到error_reason
GET-Param,其中包含一些信息,例如'user_denied',您可以查询以防止无限循环
if (isset($_GET['error_reason']) && $_GET['error_reason'] == 'user_denied') {
// dont redirect to login page
}
else
{
// redirect to fb-login
}