Python Social Authを使ってみる その3
サーバーの環境は
Nginxのproxy_redirectを使用して、Docker上のDjangoサーバにリクエストを転送しています。
こんな感じ。
proxy_pass http://127.0.0.1:9090;
そのままブラウザからアプリに接続して、SNS認証を行うと、コールバック先が
http://127.0.0.1:9090になってしまいます。
当然これだとサーバが見つかりません。
Djangoは127.0.0.1:9090で動いているので、callbackURLの指定先を任意のドメインにしないといけなくて、Djangoにもその情報を渡してあげないといけません。
設定箇所は2箇所。
1つはnginx
proxy_set_header Host $host;
もう1つはDjangoのsetting.py
USE_X_FORWARDED_HOST = True
設定が終わったら、NginxとGunicornを再起動して完了。
参考にしたのはこちらstackoverflow.com
あ、GunicornとDjangoの連携メモってない。。
Python Social Authを使ってみる その2
色々と箇条書き
1.settings.py
DEBUG = Falseにした場合はALLOWED_HOSTSの中身も設定しないとHTTPステータス400が返って来てわけわかんなくなる。
DEBUG = False ALLOWED_HOSTS = ['*']
2.Facebookの認証処理をローカルで行う場合は、適当に名前付けしとかないとリダイレクトでエラーになるもよう。
127.0.0.1 hoge.com
3.middlewareを設定する
こちらを参考にしました。stackoverflow.com
Python Social Authを使ってみる
勉強がてら「Python Social Auth 」を入れてみます。
「Python Social Auth 」はつい最近にもアップデートされているので、今回は安心して使えるのではないかな!
まずはpipからインストール。
pip install python-social-auth
Configuration — Python Social Auth documentation
ここを参考にしながらセッティングを行っていきました。
INSTALLED_APPS = ( (略) 'social.apps.django_app.default', #追加 ) AUTHENTICATION_BACKENDS = ( 'social.backends.twitter.TwitterOAuth', 'django.contrib.auth.backends.ModelBackend', ) SOCIAL_AUTH_TWITTER_KEY = 'Your Twitter Key' SOCIAL_AUTH_TWITTER_SECRET = 'Your Twitter Secret' #urlの設定 url(r'social', include('social.apps.django_app.urls', namespace='social')),
適当なテスト用のviewを用意して認証用のリンクを設定
<a href="{% url 'social:begin' 'twitter' %}">Login</a>
とりあえず実行してみたところコールバック処理まで動くこと確認できた。
ORMの設定を全くしていないので、そこでエラーが出たけど、SNSとの認証処理自体は問題なくできていそう。
よかった。
Python3.4の環境にdjango-social-authを入れてみる その2
とりあえず、サンプルページを作って動かしてみたら
ImportError at / cannot import name 'simplejson'
とエラーが出る。
ぐぐってみると
python - How to solve the ImportError: cannot import name simplejson in Django - Stack Overflow
こちらに
I think the above answers are workarounds.
Django used to ship with simplejson in django.utils, but this was removed in Django 1.5 because json module being available in Python’s standard library.
So you should now import json instead of from django.utils import simplejson, and make necessary changes where simplejson methods are called.
ってある。
まじか・・・・。
ライブラリのほうが古いDjangoにしか対応してないみたい。
ということで、一旦django-social-authは使わないようにしようと思いますた。
pip uninstall django-social-auth3
を実行(ー人ー)
今月の尿酸値は・・・
7.1
(@@)
いつも定期健診を受けたら封書が届いて先生から一言添えられてるのですが今回は
「最近ビールを飲み過ぎてませんか?」
でした。
あたりです(;´∀`)
なお、今週は3日も呑みの予定が入ってます(@@)
Python3.4の環境にdjango-social-authを入れてみる。
SNSとの連携を容易に実現するために「django-social-auth」をインストールしてみます。
とりあえずは何も考えずに
pip install django-social-auth
と入力すると
print "unable to find version in %s" % (VERSIONFILE,) SyntaxError: invalid syntax
とこんなエラーが。
これよくわかってないのですが、確かこの書き方ってPython2の書き方のような・・・。
pipってその辺のバージョンの整合性とかちゃんと考えてくれるんでないの??(@@)
まぁ入らないので、色々と調べてみたらpypi.python.org
こちらにPython3ようのを発見。
pip install django-social-auth3
としたところ、無事にインストールできた。
動作確認はこれから。
なかなか奥が深いですね。
Ubuntu上のPostgreSQLのデータディレクトリを変更する方法
UbuntuのPostgreSQLは他のとちょっと作法が違うようなのでメモっておきます。
何も考えずに起動コマンドの引数でデータディレクトリを指定したら
"`{設定変更したフォルダ}/global/pg_control": No such file or directory
とエラーが出ました。
Ubuntuは困ったことにinitdbにパスが通っていない。
(その分色んなバージョンのクラスターが簡単に同居できるようになっているみたい)
initdb自体は存在しているのでバージョンに適したコマンドを呼んであげればい。
/usr/lib/postgresql/9.3/bin/initdb -D {設定変更したフォルダ}
成功したら
Success. You can now start the database server using: /usr/lib/postgresql/9.3/bin/postgres -D {設定変更したフォルダ} or /usr/lib/postgresql/9.3/bin/pg_ctl -D {設定変更したフォルダ} -l logfile start
こんな感じでログが出る。
はぁ。これを理解するのに遠回りして3時間ほど費やした(;´Д`)
※お世話になったリンク。
WhiteBoard Coder: Change the Postgres data_directory folder location