8

私は、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.com10.0.0.54に誘導する行があり、アプリ ドメインとサイト URL の Facebook アプリ構成は次のようになります。

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

問題は、perceptual.com/perceptual/static/login/facebook/ にアクセスするたびに、次のエラーが表示されることです。 Facebook エラー (django-social-auth)

エラーが発生したときの URL は次のようになります 。 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

これが私のトレースバックです。

この時点で、私は立ち往生しています.127.0.0.1:8000ではなく、redirect_uriをFacebookが処理できるものにサーバーに変更させるにはどうすればよいですか? 私の推測では、Django から来ていると思いますが、変更方法がわかりません。次に、それが修正されても、まだ完全に認証できず、上記のエラーが発生します。どんな助けでも大歓迎です。本当にありがとう!

4

2 に答える 2

16

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

場所のレシピでこれらのヘッダーのいずれかを定義してみてください (そのための があると思いますproxy_set_header)。

于 2012-12-09T15:00:32.290 に答える