Маркер доступа к Facebook: потоки на стороне сервера и на стороне клиента - PullRequest
15 голосов
/ 30 января 2012

Документы Facebook :

Платформа Facebook поддерживает два разных потока OAuth 2.0 для входа пользователя: на стороне сервера (в спецификации это называется потоком кода аутентификации) и на стороне клиента (известный как неявный течь). Поток на стороне сервера используется всякий раз, когда вам нужно вызвать Graph API с вашего веб-сервера. Поток на стороне клиента используется, когда вам необходимо выполнить вызов API Graph из клиента, например, из JavaScript, запущенного в веб-браузере или из собственного мобильного или настольного приложения.

В чем разница между токенами доступа , принимаемыми этими потоками? Кажется, они различаются по длине.

Можем ли мы использовать токен потока на стороне сервера на клиенте? Иначе, можем ли мы использовать клиентский токен потока на сервере?

Ответы [ 4 ]

32 голосов
/ 29 мая 2012

В настоящее время Facebook говорит это о access_tokens.На OAuth на стороне сервера

, если access_token генерируется из вызова OAuth на стороне сервера, результирующий access_token будет иметь более длительное время истечения по умолчанию .Если вызов сделан, пока существует действительный долгоживущий пользовательский access_token для этого пользователя, возвращенный пользовательский access_token из этого второго вызова может быть тем же самым или мог измениться, но в любом случае время истечения будет установлено на длительноевремя истечения.

Где, как поток OAuth на стороне клиента, даст вам существующего, недолговечного, недолговечного пользователя access_token .Чтобы сделать этот access_token долгоживущим, Facebook предоставляет новую конечную точку, которая обменивает недолговечный access_token на access_token с более долгим сроком службы.Конечной точкой является

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

Также обратите внимание, что

В настоящее время долгоживущий пользователь access_token будет действителен в течение 60 дней, в то время как недолговечный пользователь access_tokens в настоящее время действителен с 1до 2 часов.

Выдержка из https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/

9 голосов
/ 20 января 2014

Для тех, кто, как я, столкнулся с той же проблемой в 2014 году, Facebook улучшил документацию по токенам доступа.

Жетоны портативные

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

(из https://developers.facebook.com/docs/facebook-login/access-tokens/#portabletokens)

Так что да, вы можете использовать токены доступа с клиента на сервере и наоборот; как уже было сказано naveen, разница в том, что клиентские токены недолговечны, а серверные - долгоживущими. Вы также можете преобразовать недолговечный токен в долгоживущий токен, следуя указаниям здесь: https://developers.facebook.com/docs/facebook-login/access-tokens/#extending

1 голос
/ 16 мая 2017

Токен может использоваться для выполнения вызовов API, поскольку он означает, что вы аутентифицированы и авторизованы для выполнения чего-либо.

Код нельзя напрямую использовать для вызова API. Для получения токена его необходимо сначала обменять на секрет вашего приложения.

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

Кстати, секрет вашего приложения должен появляться только в коде вашего сервера, но не в мобильном или веб-клиенте.

Видео в основном объясняет все это около 13:00. https://developers.facebook.com/docs/facebook-login/security

0 голосов
/ 30 января 2012

A пользователь токен доступа (и страница токен доступа) будут одинаковыми как в серверной, так и в клиентской среде (за исключением, возможно, срока действия метки времени).

Токен доступа app будет абсолютно одинаковым на стороне сервера или на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...