Декодированный подписанный запрос Facebook содержит дополнительные данные, которые не указаны в документации

#facebook #authentication

#Facebook #аутентификация

Вопрос:

У меня есть Facebook signed_request , который получен путем подписки на auth.login событие и после входа пользователя в систему с помощью кнопки входа в Facebook

После декодирования у signed_request меня есть следующая информация:

 {'issued_at': 1318492701, 
'code': 'AQCXI5aiyYtYLFNtkYhtKwDhO02lP[truncated]', 
'user_id': '100000xxxxxxxxx', 
'algorithm': 'HMAC-SHA256'}
  

Я не могу найти в документации signed_request. Что это такое code и каково его использование?

Я думал, что это может быть использовано для получения кода авторизации, как указано в этой теме, но вместе с signed_request I я также получаю токен доступа для пользователя в ответе от события входа в систему.

Комментарии:

1. Это signed_request из JavaScript SDK, верно? Код используется SDK, но не для аутентификации на стороне сервера. Это не задокументировано, поскольку это бесполезно для аутентификации.

2. Действительно, я получаю код из подписанного запроса authResponse, который я получаю, когда получаю статус входа пользователя, среди прочего.

3. @yoshi я прошу вас, пожалуйста, проверьте мой ответ спасибо

4. Материал Facebook сломан недокументирован ?! вздох

5. @Alexandre Couturon: Пожалуйста, отправьте свой предыдущий комментарий в качестве ответа.

Ответ №1:

Я не знаю, почему они не упоминают использование кода на странице документации для подписанных запросов. Код можно обменять на токен доступа, который является ключом к выполнению любых последующих запросов API Facebook.

Соответствующая документация здесь: https://developers.facebook.com/docs/authentication /

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

Чтобы аутентифицировать ваше приложение, вы должны передать код авторизации и секрет вашего приложения конечной точке токена Graph API — вместе с точно таким же redirect_uri, который использовался выше — в https://graph.facebook.com/oauth/access_token . Секрет приложения доступен из приложения разработчика и не должен быть передан кому-либо или встроен в какой-либо код, который вы будете распространять (вы должны использовать поток на стороне клиента для этих сценариев).

Комментарии:

1. Сначала я так и подумал, но если я попытаюсь использовать этот код для получения токена доступа, я всегда получаю исключение OAuth, в котором говорится, что код не может быть проверен. И формат кода также отличается, в нем есть два или три периода, так как коды, которые не находятся внутри signed_request, не имеют периодов и несколько длиннее.

2. @yoshi хороший ответ снова и снова 😉

3. @Danish Iqbal: уже видел это, в нем нет новой информации, относящейся к моему вопросу, поскольку информация, которую я ищу, не охвачена документацией. Просматривал это пару раз и не видел ни одного параметра «code», упомянутого в signedRequest, полученном от auth. ответ на вход.

Ответ №2:

Это signed_request из JavaScript SDK, верно? Код используется SDK, но не для аутентификации на стороне сервера. На самом деле, мы обновим документацию, чтобы отразить поведение signed_request.

Ответ №3:

этот код полезен для получения информации о пользователях, которые установили ваше приложение

но в любом случае скажите мне, какая информация вам нужна, тогда я могу дать вам пример кода


что ж, если вы снова проверите свой опубликованный код, вы увидите, что у вас есть идентификатор пользователя, поэтому вам не нужно использовать токен доступа для этого

но в любом случае для получения базовой информации и любой другой информации или публикации и удаления у вас есть два способа :

во-первых: сделайте это напрямую (нет необходимости в sdk, но сложнее) во-вторых: через sdk (это просто) я рекомендую вам использовать sdk amp;, если ваш язык программирования на стороне сервера — PHP, вы можете сделать это для получения базовой информации

     <?php
    include_once ('src/facebook.php');/// include sdk
    ////// config The sdk
        @ $facebook = new Facebook(array(
        'appId'  => '*************',
        'secret' => '*****************',
         )); 
$user=$facebook->api('me','GET');
echo '<pre>';
print_r($user);
echo '</pre>';
?>
  

для загрузки
загрузите php sdk

https://developers.facebook.com/docs/reference/php/

Комментарии:

1. Как вы используете его, чтобы узнать, у каких пользователей установлено приложение? Я ничего не видел об этом в документации.

2. Я использую Python, так что это не очень полезно. Я знаю, как получить информацию о пользователе, я просто хочу знать, для чего code нужен подписанный запрос ИЗНУТРИ.

3. этот код является вашим ключом для получения информации о пользователе, если вы пытаетесь получить данные напрямую, вам нужен токен доступа (например, для текущего пользователя) с таких URL -адресов graph.facebook.com/me?access_token=THE КОД, КОТОРЫЙ ВЫ ПОЛУЧАЕТЕ

4. Нет, код не является токеном доступа. Я получаю токен доступа отдельно. JS SDK возвращает authrespon с подписанным запросом и токеном доступа. Внутри подписанного запроса есть code .

Ответ №4:

Вы должны посетить этот официальный документ facebook и прочитать «Параметр signed_request» и его текст ниже для кода, который вы получаете после декодирования signed_request

Комментарии:

1. пожалуйста, смотрите официальную ссылку на документ fb в моем приведенном выше ответе спасибо 🙂