deviseで各種OAuthのSNSログイン実装 [Twitter,Facebook,Google,Yahoo!]
OAuthでの各種SNSログイン機能を、deviseを使ってるところに実装したので、それぞれ参考にした資料とかまとめておきます。
Twitter && Facebook
deviseを使っていれば、以下の記事に従えば簡単に実装できます!
Twitterでレスポンスのデータサイズが大きすぎてcookieに入りきらないエラーが出てしまった。
レスポンスのうちextra以下の部分がめちゃくちゃ大きいのでそこを削れば入るようになります。nice!
ただ、TwitterのOAuthってemailアドレスもらえないんですね...。Userでvalidationをpresence: trueとかにしてるとつらい。
gem 'omniauth-google-oauth2'
があるので、こいつを使えば実装できます。
以下の記事が参考になりました。
結構はまりました...。
まず、
redirect uri mismatch
のエラー。
こちらはomniauth-oauth2
のバージョンを下げて、omniauto-google-oauth2
をGitHubのmasterからfetchしてくるようにして対応しました。
# Gemfile gem 'omniauth-oauth2', '~> 1.3.1' gem "omniauth-google-oauth2", git: 'https://github.com/zquestz/omniauth-google-oauth2', branch: 'master'
参考: OmniAuth OAuth2 1.4.0 以降で `Invalid Credentials` エラー - Qiita
次に、
invalid credentials
みたいなエラーで止まったのは、GoogleのOAuth認証に必要なAPIが有効になってないからでした。
Google+とContactsのAPIを有効にしたらいけるようになりました。
あとたぶんlocalhost
でやってるなら127.0.0.1
にしちゃダメです。
Yahoo!
やはり、そこまでネットを普段使ってない層がユーザになる場合は、Yahoo!はまだ外せないと思います。
以下の記事が良さそうでした。
中の方が作ってるgemなのでよいのではないでしょうか。
おわり
わりとはまりました。。
テスト書かなくては