我正在使用django 1.8.3和django-allauth 0.21.0,我希望用户能够使用例如登录他们的Google帐户没有离开页面。原因是他们登录的页面中有一些有价值的数据需要在他们登录后发布。我已经使用本地帐户创建了这个工作正常,但我遇到了社交问题因为许多社交网络将用户引导到一个单独的页面来询问权限等。理想情况下,我会在我的页面上的模式中发生所有这些,一旦身份验证成功就会关闭。
我现在能想到的唯一可能(虽然不是理想的)解决方案是强制身份验证页面在另一个选项卡中打开(例如在链接中使用target =“_ blank”),然后提示用户点击在其他选项卡中完成身份验证后,在原始窗口中返回某些内容。
然而,问题在于我无法想到原始页面能够知道哪个帐户刚刚由以前的匿名用户创建而没有刷新页面,这将导致需要的重要数据被张贴丢失。
有没有人对我如何完成上述两种解决方案中的任何一种有任何想法?
答案 0 :(得分:1)
我最后通过使用Django的会话框架来解决这个问题。事实证明,会话ID由django-allauth自动通过oauth程序传递,因此在登录完成后,request.session
中存储的任何内容都可以在另一端访问。
答案 1 :(得分:0)
一个选项是主窗体在新窗口中弹出社交身份验证,然后使用AJAX轮询社交身份验证是否已完成。只要你对它的性能特征很好(它稍微摧毁你的服务器),那么这可能是最简单的解决方案。