Чтобы ответить на ваш вопрос об обнаружении ответа диалога с помощью PHP SDK:
Проблема заключается в том, что getloginURL принимает только один параметр URL, который он использует в случае успеха или ошибки.Мне нужно было определить, нажал ли пользователь кнопку «ОК» или «Отмена» в диалоговом окне разрешений, чтобы я мог либо перенаправить на страницу диалогового окна предварительных разрешений, либо показать правильный зарегистрированный контент.
Все, что я делал, это проверял,'error_reason' существовал в параметрах url, и если ошибка была 'user_denied', и предпринял соответствующее действие.Возможно, есть лучший способ, но у меня это сработало.
<?php
//Facebook Authentication
$user = $facebook->getUser();
//Get Login URL
$loginUrl = $facebook->getLoginUrl();
//User is logged in
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
//User is not logged in
if (!$user) {
//Check if error_reason was generated and if the user denied login
if (isset($_REQUEST['error_reason']) && ($_REQUEST['error_reason']=='user_denied')) {
//user cancelled permissions dialog thus not logged in to app, redirect elsewhere
echo "<script type='text/javascript'>top.location.href = 'YOUR REDIRECT URL';</script>";
exit;
} else {
//user not logged in so initiate permissions dialog
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
exit;
}
}
//get user basic description
$userInfo = $facebook->api("/$user");
?>