2015-07-12 4 views
2

Я использую django 1.8.3 и django-allauth 0.21.0, и я хотел бы, чтобы пользователь мог войти в систему, используя, например, их аккаунт Google, не выходя из страницы. Причина в том, что есть некоторые ценные данные со страницы, с которой они вступают в систему, из которой необходимо выложить после того, как они вошли в систему. У меня уже есть это нормально, используя создание локальной учетной записи, но у меня возникают проблемы с социальными потому что многие из социальных сетей направляют пользователя на отдельную страницу, чтобы запрашивать разрешения и т. д. В идеале, у меня было бы все это в модальном виде на моей странице, которое закрывается после успешной проверки подлинности.Социальный вход при использовании django-allauth, не выходя из страницы

Единственное возможное (хотя и не идеальное) решение, о котором я могу сейчас думать, это заставить страницу аутентификации открыть другую вкладку (например, используя ссылку target = "_ blank" в ссылке), а затем предложив пользователю нажмите на что-то в исходном окне после завершения проверки подлинности на другой вкладке.

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

Есть ли у кого-нибудь идеи о том, как я мог бы выполнить одно из двух решений, описанных выше?

+0

Связанный: http://stackoverflow.com/questions/16162108/implementing-ajax-requests-response-with-django-allauth –

+0

@GlynJackson Да, я фактически использовал некоторую информацию из этого вопроса, чтобы реализовать локальную регистрацию/(у меня есть работа), но у меня проблемы с переходом от этого к социальному. Если вы имеете в виду pennersr, говоря, что я «не повезло», я не совсем готов отказаться от этого! –

+1

Разве это не канонический вариант использования для локального хранилища? В зависимости от характера данных yiu также может кодировать его в параметр «code», который сохраняется во время танца OAuth. – pinoyyid

ответ

1

В итоге я решил это, используя рамки сеанса Django. Оказывается, идентификатор сеанса автоматически передается через oauth-процедуру django-allauth, поэтому все, что хранится в request.session, доступно с другой стороны после завершения входа.

0

Один из вариантов заключается в том, что первичная форма всплывает в социальной сети в новом окне, а затем использует AJAX для опроса о завершении социальной аутентификации. Пока вы в порядке с характеристиками производительности (немного забивает ваш сервер), то это, вероятно, самое простое решение.

+0

Похоже, что это может работать я, но я не уверен, где начать реализацию чего-то подобного. Не могли бы вы отреагировать на свой ответ, чтобы предоставить немного больше информации, т. Е. Какой-то грубый код, чтобы AJAX определял, был ли социальный аут завершен в другом окне? –

Смежные вопросы