Я собирался написать это как комментарий, но он стал немного длиннее ...:)
Несколько указателей, использующих PHP SDK:
$facebook->getUser();
Это будет работать независимо от аутентификации. getUser () извлекает общедоступные данные, для которых не требуется токен доступа, ОДНАКО, если у вас есть токен доступа, а пользователь предоставил разрешения email
, например, этот метод также будет содержать их адрес электронной почты.
Лучший тест для аутентифицированного пользователя:
$code = $_REQUEST['code'] ? true : false;
if (!$code) {
echo ("<script>window.top.location=\"...\"</script>");
}
проверит, авторизовал ли пользователь ваше приложение.
$access = $facebook->getAccessToken();
Убедитесь, что вы всегда запрашиваете токен доступа (приоритет!). Вы будете получать подписанный запрос только тогда, когда вы будете перенаправлены из диалога facebook в ваше приложение. (т. е.) диалог OAUT. Этот метод SDK также сохранит ваш токен доступа в переменную сеанса. Вы можете вызвать метод getAccessToken () на любой последующей странице приложения, на которой активен сеанс PHP, ДАЖЕ, КОГДА не было подписано ни одного запроса.
Теперь, когда у вас есть действительный токен доступа для вошедшего в систему пользователя, вы можете продолжить:
$user = $facebook->api('/me');
или, еще проще:
$user = $facebook->getUser();
Я склонен резервировать вызовы API для более сложных запросов, таких как публикация в фиде пользователей / фиде друзей.
Итак, резюмируем:
-> проверить на $code
-> получить подписанный запрос на первой странице после диалога oAuth.
-> Если cookie-файлы браузера отключены (вероятно, в ie), не забудьте перенести сеанс на следующую страницу с константой SID. Если вы этого не сделаете, вы потеряете свой сохраненный токен доступа (не очень хорошо!).