фейсбук подключи api callback url - PullRequest
0 голосов
/ 28 мая 2011

Я разрабатываю сайт и подключаю Facebook, используя PHP SDK 3.

Проблема в том, что страница, на которой Facebook возвращает результаты после аутентификации пользователя и предоставления разрешения. для меня после того, как пользователь нажимает «разрешить», он аутентифицируется и затем возвращается на ту же страницу (индекс) со строкой запроса.

Что я хочу, так это то, что если пользователь нажимает «не разрешать», он будет перенаправлен на определенную страницу, такую ​​как login-fail.php, а если он разрешит, он будет перенаправлен на login-success.php, где его данные будут обработаны и сохранены в базе данных.

есть идеи?

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

В моем случае я решил эту проблему с помощью проверки параметра «error_reason», когда пользователь нажимал на «Не разрешать», URL переносит этот параметр. Вы можете увидеть это на этой странице:

http://aplicacionesfacebookparadummies.blogspot.com/2011/09/obtener-datos-usuario-mediante-login.html

1 голос
/ 28 мая 2011

Вы не можете указать 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, даже если он нажмет «Не разрешать».Это должно быть опечатка в комментариях к коду.

...