2015-08-07 2 views
0

Я работаю над базовым сервисом REST API для приложения, которое использует как электронную почту, так и учетную запись facebook. Позволяет просто притворяться, что это приложение представляет собой приложение списка задач, и пользователь может войти в систему и добавить заметки, которые они могли бы позже просмотреть, на разных устройствах.Facebook login flow with to nodejs

«Логин с электронной почтой» довольно прост, приложение сделает запрос:

URL: /v1/login 
Params: email, password 

Затем имя_служба возвращает маркер доступа, если вся эта информация является правильной, поэтому мы знаем, личность пользователя создание, обновление или удаление элемента примечания/списка.

Теперь для стороны facebook. Я видел несколько ответов differnet во всех документах StackOverflow и Facebook. Некоторые люди говорят, просто перейдите в идентификатор и войдите в систему с идентификатором соответствия. Это будет означать вызов функции входа из SDK Facebook и просто сохранение этого идентификатора для отправки запроса.

URL: /v1/login/facebook 
Params: id 

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

Окончательный метод, который я знаю будет переходящим в приложение секрет:

URL: /v1/login/facebook 
Params: id, secret 

Это кажется намного наиболее безопасным, если вы используете протокол HTTPS для подключения к серверу. Недостатком этого метода является то, что, если секретный токен Facebook будет сброшен? Я имею в виду, что вы всегда можете позвонить на сервер, чтобы запросить его, и проверить, сброшен ли токен, и если это так, верните новый. Но тогда, если бы кто-нибудь имел доступ к конечной точке для проверки токенов, это могло бы дать им новый секретный токен.

Я знаю, что мы имеем дело с интернетом, здесь и там всегда будут недостатки в безопасности, и нет способа сделать это . Но каков наилучший способ?

ответ

1

Попробуйте послать facebook_token для этого пользователя. URL:/v1/Логин/facebook Params: facebook_token

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

получить идентификатор facebook от этого ответа и использовать его для предоставления данных этому пользователю.