Вы не можете указать URL перенаправления в случае ошибки.Лучшее, что вы можете сделать, это установить URL перенаправления, который будет одинаковым для успеха или ошибки:
$args['redirect_uri'] = "http://www.yoursite.com/after-dialog.php"
$url = $facebook->getLoginUrl($args);
Если пользователь нажимает «Не разрешать», он будет перенаправлен на страницу after-dialog.php
со следующими параметрами GET:
error = access_denied
error_reason = user_denied
error_description = The+user+denied+your+request.
Если вы действительно хотите перенаправить его в соответствии с успешностью его входа в систему, вы можете отследить его в верхней части файла after-dialog.php
по:
if (isset($_GET['error'])) {
header('Location: http://www.yoursite.com/login-failed.php");
} else {
header('Location: http://www.yoursite.com/login-success.php");
}
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: Как вы указали (в комментариях к этому ответу) комментарии в коде SDK говорят:
redirect_uri: the url to go to after a successful login
Но ссылка на API гласит:
Если пользователь нажимает Не разрешать , ваше приложение не авторизовано.Диалог OAuth перенаправит (через HTTP 302) браузер пользователя на URL, который вы передали в параметре redirect_uri .
и:
Еслипользователь нажимает Разрешить , ваше приложение авторизовано.Диалог OAuth перенаправит (через HTTP 302) браузер пользователя на URL, который вы передали в параметре redirect_uri .
Я также провел несколько тестов, и пользователь всегда перенаправляет наredirect_uri
, даже если он нажмет «Не разрешать».Это должно быть опечатка в комментариях к коду.