Django python-social-auth重定向失败?

时间:2014-10-20 20:33:08

标签: django google-oauth python-social-auth

我正在将谷歌登录添加到我的django应用程序中,仅用于我的办公室。登录工作正常,但我正在尝试添加更好的错误页面。我在/ login / error写了一个登录错误页面,它提供了一些关于出错的信息,但我似乎无法让django在需要时显示该页面。

当gmail帐户不在我们的公司帐户(*@myoffice.com)上或用户拒绝许可时,登录将失败。我希望它重定向到/ login / error,但重定向永远不会有效。

我尝试过添加

SOCIAL_AUTH_LOGIN_ERROR_URL = '/login/error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/login/error/'

到我的settings.py文件。没有捕获我想要处理此页面的错误。我可以确认/ login / error是否正常工作,问题只在于获取正确的重定向。

非常感谢任何帮助。

更新:继承了更多代码,因为这不像我希望的那样快速修复

来自settings.py(省略密钥和密钥,更改白名单网址)

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'thelibrary',
    'home',
    'social.apps.django_app.default',
)

AUTHENTICATION_BACKENDS = (
   'social.backends.google.GoogleOAuth2',
   'django.contrib.auth.backends.ModelBackend',
)


LOGIN_REDIRECT_URL = '/'


SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['example.com']

SOCIAL_AUTH_LOGIN_ERROR_URL = '/login/error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/login/error/'

从我要求用户登录的模板

{% if user and not user.is_anonymous %}

     Not yet implemented

{% else %}
    Welcome guest!
    <br />
    Please  <a href="{% url 'social:begin' 'google-oauth2' %}?next={{ request.path   }}">Login with Google</a>
{% endif %}

当请求失败时,我在控制台中获得的错误输出

[21/Oct/2014 13:44:42] "GET /login/google-oauth2/ HTTP/1.1" 302 0
[21/Oct/2014 13:44:51] "GET /complete/google-oauth2/?state=3YjuxWntctsrg6emGEPfMjzeeP4NSazX&code=4/lobir0Y2ZZnEPnJRE99gjqhjZh2RbwJC2wfCrs5Zy9A.Envfd1PM7OcaXmXvfARQvtiwnetlkgI HTTP/1.1" 500 157344

1 个答案:

答案 0 :(得分:0)

SOCIAL_AUTH_LOGIN_ERROR_URL似乎是正确的选择,它对我有用。可能错误在你的应用程序的其他地方,但没有任何代码,这是不可能的。

将浏览器重定向到哪个位置?

您可以查看浏览器开发人员工具以查看网络历史记录(只需确保在重定向/重新加载时不会清除它)。阅读所有请求并尝试了解其顺序和失败点可能会给您一些提示。