2013-06-16 2 views
6

Я использую Passport для регистрации/аутентификации с помощью Facebook. Когда OAuth успешно, я вернулся:Аутентификация с использованием Facebook с помощью Passportjs: что такое accessToken, что я должен хранить после регистрации?

  • accessToken
  • refreshToken
  • profile

Теперь ... когда пользователь успешно регистрирует с помощью Facebook, я храню accessToken и информация profile , Когда кто-то хочет войти в систему и снова проходит через oauth, мое приложение снова получает accessToken и profile. Проблема есть, accessToken - другой. Я действительно ожидал, что accessToken будет таким же после первой аутентификации ...

На этом этапе я подключаю своего собственного пользователя с полем Facebook id из профиля. Но ... как бы я действительно использовал accessToken? Имеет ли смысл держать его? Если да, то зачем мне это делать?

Я действительно ожидаю, что accessToken будет таким же и использовать его для успешного входа в систему. Я, очевидно, не могу этого сделать ... так что я смущен!

ответ

4

Вы должны хранить идентификатор facebook. Он должен находиться в объекте profile. Ток доступа будет изменяться в соответствии с политикой авторизации facebook. То, что вы должны делать

  1. Получить пользователю войти в систему через Facebook
  2. Проверь его facebook идентификатор против facebook идентификатор в базе данных.

маркеры доступа истекают часто, как описано here

+1

Фантастично, большое вам спасибо за вашу точную, краткую помощь! – Merc

+0

Без проблем @Merc –

8

Вы должны держать маркер доступа, если вы хотите запросить API facebook от имени вашего вошедшего в-через-facebook пользователя. Если вы хотите использовать facebook только для входа в систему, вы можете отказаться от него. Если вы хотите спросить facebook о последнем обновлении статуса пользователя, например, вам нужно включить этот accessToken в качестве параметра при вызове API. Точка доступа tooken заключается в том, что она позволяет набор операций от имени пользователя, но он истекает, поэтому, если он попадает в неправильные руки, он не может быть использован для нанесения такого же повреждения, как постоянный токен или фактический пароль пользователя. Он будет отличаться каждый раз по дизайну.

+0

Спасибо! Дополняет другой ответ ... – Merc

+0

Да! Большой свет появился только после 2 часов поиска и чтения :) – Flavio