今回はRailsでdeviseとomniauthを用いてfacebookで認証する方法を書きたいと思います。
僕も認証出来るようになるまでに色んなソースを漁ったり、色んなミスをしたりして2日かかってしまいました…
そんな人が1人でも減るように、そして備忘録として残しておきます。
##一番大事なこと
誰かが書いた日本語のQiitaの記事とかブログを参考する前に一次情報のgithubのOmniAuth:Overviewを見ながら作るのが一番いいです。
というか、ここにほとんど全部書いています。
https://github.com/heartcombo/devise/wiki/OmniAuth:-Overview
こんな記事を書いておいて元も子もないですが、本当にこれが一番参考になりました。
僕も最初は英語読むの面倒だなと思って日本語で書かれた記事ばかり読んでいたのですが、全く上手くいかなかったです。
しかも信頼性の点でもやっぱりofficialな記事には劣るので、英語に抵抗がある人でも必ず読むべきだと思いました。
##僕がしたミスと対策について
①rails serverが立ち上がらない
・gitを入れていない人はrails new app名の後に-Gを忘れないようにしましょう。
必要なファイルが作成されなかったです…
・binファイルが変なところに移動していて立ち上がらないこともあったので、同じようなミスがあった時は一度確認してみてください。
②facebookでログインが上手くいっているのにsign upの画面にリダイレクトされてしまう
これは僕の場合は最初にデータベースに保存した情報と再びログインしようとしたときの情報が違っていたからで、古いデータを一度削除してからログインすると上手くいきました。
③アプリIDが有効ではないと表示されてしまう
これは上に挙げたOmniAuth: Overview通りにコーディングして、facebookアプリ側のcallbackのurlやアプリIDとSECRETに気をつければ直りました。
そのほかにもいろんなバグはありましたが、OmniAuth: Overviewを基本としてその都度バグをググって対処していきました。
##最後に
何回も口うるさく言ってしまいましたが、一次情報が如何に大事かと思い知るいい練習となったので、これからも英語から逃げることなく頑張ります。