手順書は一度最後まで目を通すほうがいいことに気づかされた。

前回、実装する途中で急激な眠気に襲われたため 敢え無く中断してしまったので、 今回はその続きから。

devise.rbのファイルにfacebookからの情報を引っ張り出すために 前に作ったfacebookアプリの認証データを入力。

config.omniauth :facebook, "APP_ID", "APP_SECRET"

スクリーンショット 2017-08-15 13.32.03.png

とりあえずファイルの中にomniauthに関する記述があったので その直下にコピペしてみた。

ところで気になるのがAPP_IDとAPP_SECRETの二つ。

これは、前々回にfacebook developmentで作成したアプリのIDと そこで自動生成されたシークレットコードのよう。

こればっかりはセキュリティの関係から載せれないので それぞれ適応する箇所を個人で参照しなければならないのよねぇ・・。

とりあえずコピペして保存。

そしたら次にユーザのモデルのあたりもいじるらしく modelディレクトリ直下のuser.rbに

:omniauthable

をとりあえずdeviseのコードの最後に追加してみる。

なんとなく

devise :omniauthable, :omniauth_providers => [:facebook]

でそのままコピペしてしまうと 同じdeviseのコードが重複することになると思ったので あえて記述する内容を絞ってみる。

そして、noteの部分にも書いてあるように このままだとサーバエラーを起こしてしまうので 一旦再起動。

 

それにしても英語慣れしてないせいか やけにこの手順書が長く感じる。。

この通りにやって本気で大丈夫なのかといきなり焦りだす始末←

ここで何を思ったか全部読み進めてみることに。

 

そしてまさかの事実が発覚。

 

『2015年7月8日からFacebookapi v2.4に変更されたので、 あなたはinfo_fieldsを電子メールフィールドを取得するために追加する必要があります。(google翻訳)』

・・え?

確か今のバージョンって。。

Fetching omniauth-facebook 4.0.0 Installing omniauth-facebook 4.0.0 (インストールした時のログが残ってた)

ノォォォォォォ!!

いやいやいや。それは一番最初に書いとこ?ね? ここにいる英語読めない馬鹿はちゃんと上からトレースしちゃうからね?

はぁぁぁ・・ってことはさっきのとこやり直しか。。

config.omniauth :facebook, "APP_ID", "APP_SECRET", scope: 'email', info_fields: 'email,name'

とりあえず書かれてる通りにコードし直して。再度保存。

よし、これで問題ないはず。。

えーっと、そしたら次はリンクパスの貼り付けか。

多分これは体裁が整ってからやったほうが うまくいきそうな感じがするので一旦保留。

あとはルーティングの設定。

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

route.rbに同じdevise_for :usersのコードがあるので その部分にコピペしてみる。

多分これでコードのコンフリクトは避けれるはず。

それにしても長い・・。 そして眠い。 ↑ただ単に寝たいだけか えー、一旦CMです(タ○リ風)

この記事をシェアする