痛風とシステム障害を恐れるエンジニアのブログ

趣味のことだったり仕事に関することだったりを徒然なるままに。webとかオープン系の会社で働いてます。お仕事の依頼お待ちしておりまーす。

Django + Python Social Auth + Google OAuth2で詰まった件

virgo.hatenadiary.jp
このへんでSocialAuthは使えるかも!
と、期待していたわけですが、実際に使ってみて、FacebookTwitterのアカウントの連携は問題なくいきました。

問題はGoogle
これにはだいぶ悩まされました。


基本的には以下のリンクに書いてある方法で認証はうまくいくんです。えぇ今になって思えば、まったく問題ないのです。
Google — Django Social Auth documentation

こちらのリンクにもある通り、とりあえず、GoogleのDevelopersConsoleに行ってAPIの登録をする必要があります。
大事なのは

クライアント ID ****
クライアント シークレット  ******

ですね。
これをsettings.pyに登録します。

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '*****'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '******'

で、これで終わりかというとそうでもなかったのです。
最初はGoogleさんから404が返って来てエラーでした。
これの理由は、DevelopersConsoleで

承認済みのリダイレクト URI

を登録していなかったからです。

これはなんとなくすぐ分かりました。


で、この設定をしたので自分のサイトにコールバックされるのですが、何故か、認証情報が全く無い。
こっからが非常に苦労しましたが、やっと解決しました。

これは、結論から言うと、DevelopersConsoleでGooglePlusのAPIを有効にすることで解決しました。
ただ、APIを有効にしても数分でそれが反映されるという情報がありましたが、私の場合は2時間近くかかりました。

だから最初は数分たっても状況が変わらないので色々と調べていたのですが、けっきょく2時間ほどたって、急にログインできるようになったというオチ/(^o^)\

何はともあれTwitterFacebookGoogleでログインできるようになったからよかった。
自前でユーザー管理をするより全然楽でいいですね。
実際はDjangoの方でユーザーテーブルを作ってくれてるようですが、私はあまりそれを意識しないので楽です。