2012-12-08 19 views
6

私はdjango-social-authの仕事をしようとすると壁に頭を叩いています。私の開発サーバーは私の仕事のプライベートネットワークのサーバーで、10.0.0。* IPアドレスでアクセスします。このサーバー上では複数のdjangoアプリケーションを実行しています。ここに私はこのアプリのための設定があります:django-social-auth redirect_uri無効

# 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/に行き、私のバックボーンアプリを手に入れることができます。

NOW、設定ファイルにFacebook APP_IDとFACEBOOK_API_SECRETが正しく設定されています。私はまた私の/ etcにラインを持っている/ホストは私の実際マシン上のファイルmyapp.com10.0.0.54を指示し(ないのdevのサーバー)、およびアプリケーションドメインやサイトのURLのための私のFacebookアプリの設定次のようになります。

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

問題があり、私はそれが私にこのエラー与えperceptual.com/perceptual/static/login/facebook/に行くたび: ここFacebook Error (django-social-auth)

は私のURLをするときのようになりますが私はそのエラーを受け取ります: 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を127.0.0.1:8000の代わりにFacebookが処理できるものに変更しますか?私の推測では、それはジャンゴから来ているが、私はそれをどのように変更するか分からない。その後、それが修正されると、それでも完全に認証できず、上記のエラーが発生します。どんな助けでも大歓迎です。本当にありがとう!

答えて

11

django-social-authは、redirect_uriパラメータを構築するためにrequest.build_absolute_uri()を使用します。 djangoのコードをbuild_absolute_uri()にチェックすると、は、HTTP_X_FORWARDED_HOSTHTTP_HOSTまたはSERVER_NAMEをチェックするget_host()を呼び出します。

ロケーションレシピでこれらのヘッダーを定義してみてください(そのためにはproxy_set_headerがあると思います)。

+5

ありがとう、omab!私はこの設定を自分のnginx設定ファイルに設定することができました: 'proxy_set_header X-Forwarded-Host 'xxxxx.com'; と私のdjango settings.pyファイル: ' USE_X_FORWARDED_HOST = True' それはすべてですワーキング。再度、感謝します! –

+1

@JamesRasmussenうん、 'USE_X_FORWARDED_HOST = True'は私が欠けていたビットだった。ありがとう。 –

+0

こちらもリバースプロキシの設定に関する設定です:http://django-social-auth.readthedocs.org/en/latest/configuration.html#processing-redirects-and-urlopen –

関連する問題