Django + Python Social Auth + Google OAuth2で詰まった件
virgo.hatenadiary.jp
このへんでSocialAuthは使えるかも!
と、期待していたわけですが、実際に使ってみて、FacebookやTwitterのアカウントの連携は問題なくいきました。
問題は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^)\
何はともあれTwitter、Facebook、Googleでログインできるようになったからよかった。
自前でユーザー管理をするより全然楽でいいですね。
実際はDjangoの方でユーザーテーブルを作ってくれてるようですが、私はあまりそれを意識しないので楽です。