8

我正在使用 Django 1.6.2 和 Python-Social-Auth 0.1.23。我还在使用 Twitter Bootstrap 作为我的模板引擎。

我已经在我的模板中使用了 python-social-auth 并为我的客户实现了 LinkedIn 登录,我已经对其进行了编码,以便使用 javascript 在新窗口中打开登录。

<li>
    <a class="btn" href="" 
        onclick="window.open('{% url 'social:begin' 'linkedin' %}', '_blank', 'location=yes,height=570,width=520,scrollbars=yes,status=yes');">
<span class="glyphicon glyphicon-user"></span> Sign In</a></li>

我的问题是,如何在成功登录后关闭这个子窗口并重新加载父窗口?

我意识到这个问题可能非常具体,但之前有人必须实施相同的想法。请注意:如果可以的话,我不想编辑任何 python-social-auth 的东西。

让我知道您是否可以使用任何其他信息。我也可以包含我的views.py。

4

2 回答 2

5

您已经解决了打开弹出窗口部分,关闭是一个棘手的部分,因为您需要使用所需的 JS 代码提供一些页面来关闭弹出窗口,然后触发父窗口中的重新加载。为此,只需定义设置SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/page/that/servers/the/js',然后创建执行此操作的视图/模板。

检查父级中的关闭和触发重新加载是如何完成的,这很容易,并将该 JS 提供给用户。

于 2014-04-22T22:38:41.223 回答
2

我遇到过同样的问题。我的解决方案是在我的 settings.py 文件中设置成功的重定向登录。 SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/close/'

然后将其映射到我的 urls 文件中 url(r'^close/$', TemplateView.as_view(template_name='close.html')),

然后让我的 close.html 包含一个脚本标记以在加载时关闭浏览器窗口而不触发确认弹出窗口。

<script>
    window.open('', '_self', ''); window.close();
</script>
于 2016-05-02T15:57:25.717 回答