我一直在撞墙试图让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/时,它都会给我这个错误:
所以你可以从URL看到我的redirect_uri是http://localhost:8001
- 但我不希望它显然是那样。一旦我将其更改为perceptual.com,它就会更进一步:然后我收到此错误:
AuthFailed at /perceptual/complete/facebook/
Authentication failed: There was an error authenticating the app
此时,我陷入困境 - 如何让我的服务器将redirect_uri更改为Facebook可以处理的内容,而不是127.0.0.1:8000?我的猜测是它来自Django,但我不知道如何改变它。然后,一旦修复,它仍然无法完全验证,并得到上述错误。任何帮助将不胜感激。非常感谢!
答案 0 :(得分:12)
django-social-auth使用request.build_absolute_uri()
来构建redirect_uri
参数。检查build_absolute_uri()
的django代码会调用get_host()
来检查HTTP_X_FORWARDED_HOST
,HTTP_HOST
或SERVER_NAME
。
尝试在您的位置配方中定义任何标题(我认为有proxy_set_header
。)