django-social-auth redirect_uri无效

时间:2012-12-08 23:19:24

标签: python django django-socialauth

我一直在撞墙试图让django-social-auth工作。我的开发服务器是我工作的专用网络中的服务器,由10.0.0。* IP地址访问。我们在这台服务器上运行了多个django应用程序。这是我对这个应用程序的配置:

# Perceptual
location /perceptual/static/ {
        alias /opt/perceptual/perceptual/static/;
}
location /perceptual/ {
        proxy_pass http://127.0.0.1:8001;
}

我正在运行一个来自我的静态目录的backbone.js应用程序。所以,我可以去10.0.0.54/perceptual/static/,并获得我的骨干应用程序。

现在,我的设置文件中有我的Facebook APP_ID和FACEBOOK_API_SECRET,都已正确配置。我的实际计算机(不是开发服务器)上的/ etc / hosts文件中也有一行,指向 myapp.com 10.0.0.54 ,我的应用程序域和站点URL的Facebook应用程序配置如下所示:

App Domains: perceptual.com
Site URL: http://perceptual.com

问题是,每当我去perceptual.com/perceptual/static/login/facebook/时,它都会给我这个错误: Facebook Error (django-social-auth)

以下是我收到该错误时的网址: https://www.facebook.com/dialog/oauth?scope=email&state=PC0OhXnEuaW2wcUuINO0rMSMAtVDuMbn&redirect_uri=http%3A%2F%2F127.0.0.1%3A8001%2Fperceptual%2Fcomplete%2Ffacebook%2F%3Fredirect_state%3DPC0OhXnEuaW2wcUuINO0rMSMAtVDuMbn&client_id=419178148154217

所以你可以从URL看到我的redirect_uri是http://localhost:8001 - 但我不希望它显然是那样。一旦我将其更改为perceptual.com,它就会更进一步:然后我收到此错误:

AuthFailed at /perceptual/complete/facebook/
Authentication failed: There was an error authenticating the app

这是我的traceback, if it helps

此时,我陷入困境 - 如何让我的服务器将redirect_uri更改为Facebook可以处理的内容,而不是127.0.0.1:8000?我的猜测是它来自Django,但我不知道如何改变它。然后,一旦修复,它仍然无法完全验证,并得到上述错误。任何帮助将不胜感激。非常感谢!

1 个答案:

答案 0 :(得分:12)

django-social-auth使用request.build_absolute_uri()来构建redirect_uri参数。检查build_absolute_uri()的django代码会调用get_host()来检查HTTP_X_FORWARDED_HOSTHTTP_HOSTSERVER_NAME

尝试在您的位置配方中定义任何标题(我认为有proxy_set_header。)