Intereting Posts
PHP – Измененное изображение имеет больший размер файла Получить официальный часовой пояс в PHP? codeigniter Mail to go to Спам любое решение PHPExcel – форматирование теряется при редактировании кода Измените файл конфигурации в скомпилированном установщике Inno Setup (пользовательский файл конфигурации для каждого загружаемого исполняемого файла) Должен ли я использовать filter_var для проверки электронной почты? Справка по началу сеанса PHP Объект класса Database не может быть преобразован в строку Проверка даты, которая выпадает на рабочий день или на выходные? Обнаруживать, установлен ли Mod_Security с помощью PHP? Попытка получить свойство не объекта – Laravel 5 Как добавить значения в контроллер Injection Dependency? Прозрачный до белого в Imagick для PHP Как поделиться формой между двумя веб-сайтами Возврат списка цепочек и последнего сообщения каждого сообщения с использованием базы данных php и mysql

Вход в Facebook с использованием OAuth 2.0

  1. Я хочу, чтобы люди заходили на мой сайт со своими учетными записями Facebook.
  2. Мне нужно получить информацию из своего профиля в Facebook и добавить ее в базу данных моего сайта

Я попытался использовать метод OAuth 2.0, который делает перенаправление на этот URL-адрес

https://www.facebook.com/dialog/oauth? client_id=YOUR_APP_ID &redirect_uri=YOUR_REDIRECT_URI &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES &state=SOME_ARBITRARY_BUT_UNIQUE_STRING 

Я успешно аутентифицировал пользователя, но теперь возникла основная проблема. Как получить доступ к данным, которые отправляются как ответ, все, что я вижу, это переменная GET именем code и некоторый длинный текст. Как конвертировать в пригодные для использования данные?

Я использую php для своего веб-сайта

Обменный код для токена доступа пользователя

Как только пользователь разрешил ваше приложение, вы должны сделать запрос на стороне сервера, чтобы обменять код, возвращенный выше для токена доступа пользователя.

 https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID &redirect_uri=YOUR_REDIRECT_URI &client_secret=YOUR_APP_SECRET &code=CODE_GENERATED_BY_FACEBOOK 

Параметр client_secret должен быть App Secret, как показано в настройках вашего приложения. Тело ответа на этот запрос будет строкой, закодированной в URL:

 access_token=USER_ACESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES 

Вы должны проанализировать эту строку и использовать значение access_token, чтобы делать запросы к API-интерфейсу Graph. Вы также должны сохранить токен доступа в своей базе данных, чтобы делать дальнейшие запросы к API без повторной аутентификации пользователя.

По достижении времени истечения токена доступа токен станет недействительным и больше не может использоваться в запросах API. Чтобы получить новый токен доступа пользователя, вы должны передать пользователя через этот поток снова. Однако, если пользователь не отменил авторизацию вашего приложения, и вы просите разрешения, кроме тех, которые пользователь уже предоставил вашему приложению, тогда диалог не будет отображаться, и пользователь будет прозрачно перенаправлен на ваш redirect_uri с новым кодом, который можно обменять на новый токен доступа пользователя.

Если есть проблема с обменом кодом для токена доступа пользователя, сервер авторизации выдаст HTTP 400 и вернет ошибку как объект JSON в теле ответа:

 { "error": { "type": "OAuthException", "message": "Error validating verification code." } } 

Для дополнительной справки: http://developers.facebook.com/docs/authentication/server-side/

Выполнение запросов к API-интерфейсу Graph

Имея действующий токен доступа пользователя, вы можете делать запросы на чтение и запись данных из Graph API. Обычным первым запросом было бы получить основную информацию (включая идентификатор и имя) пользователя, который просто аутентифицировал ваше приложение:

 https://graph.facebook.com/me?access_token=YOUR_USER_ACCESS_TOKEN 

Существует официальный SDK для php из Facebook. Это облегчает жизнь.

Проверьте этот пример кода