Аутентификация Facebook: на стороне сервера и на стороне клиента. Питон/Джанго

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

В настоящее время я использую стандартную аутентификацию Django и тестирую аутентификацию на стороне сервера перед возвратом страницы.

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

Или это на самом деле не проблема (звонок через Facebook быстрый) или есть какой-то другой умный способ, который я упускаю? Как-то переместить вызов на клиентскую сторону, где я считаю, что Facebook использует кеширование?

Я просмотрел некоторые пакеты Django/Facebook, но ни один из них, похоже, не объясняет общую стратегию, которую я и хочу понять. Учебники, которые я просмотрел, описывают, как войти в систему, но не беспокойтесь о том, что происходит, когда пользователь выходит из Facebook.


person user984003    schedule 10.10.2013    source источник


Ответы (1)


По сути, пользователь входит в систему один раз, используя facebook (это сделает запрос к facebook).

после входа в систему он будет вести себя как обычный пользователь django (большинство приложений создают пользователя Django для каждого пользователя facebook)

Только когда срок действия токена доступа истек («пароль» для использования данных facebook), вам нужно будет снова подключиться к facebook.

Я рекомендую вам использовать Python Social Auth, который в основном делает все за вас.

person YardenST    schedule 10.10.2013
comment
Что произойдет, если пользователь выйдет из Facebook — будут ли они по-прежнему ожидать входа в мое веб-приложение? Или они ожидают, что выход из Facebook приведет к их выходу из каждого приложения, которое использует их логин в Facebook, и в этом случае мне нужно продолжать проверять, вошли ли они в Facebook? - person user984003; 10.10.2013
comment
хорошо, это хороший вопрос. это полностью зависит от вас: дадите ли вы возможность зарегистрироваться на своем сайте с помощью Facebook? или пользователь на вашем сайте является пользователем facebook? более распространенным является первый вариант, поэтому даже если пользователь не вошел в систему на Facebook, это не означает, что он не может войти на ваш сайт. но всякий раз, когда ему нужно будет снова войти на ваш сайт, ему нужно будет использовать свою учетную запись facebook, потому что у пользователей facebook нет паролей на вашем сайте. это главная проблема: часть аутентификации. - person YardenST; 10.10.2013
comment
Ах я вижу. Конечно, было бы проще, если бы Facebook и мое приложение не были так связаны. Вы случайно не знаете, нужно ли им авторизоваться в Facebook, чтобы я мог получить доступ к их информации в Facebook — например, их электронной почте или чему-то еще, на что они дали мне разрешение? - person user984003; 10.10.2013
comment
Нет, они не должны быть. Когда процесс аутентификации завершен, вы получаете некоторые основные сведения, такие как электронная почта, список интересов, лайки и т. д. в ответе от Facebook. И самое главное, они дают вам токен доступа: который дает вам доступ к информации о пользователе, когда вы хотите (но только для того, что пользователь согласился предоставить, конечно). Я думаю, что срок действия этого токена доступа истекает через 60 дней, и вам нужно снова получить разрешение на другой. - person YardenST; 10.10.2013
comment
Спасибо, это большая помощь. - person user984003; 10.10.2013