woshidan's blog

あいとゆうきとITと、とっておきの話。

Facebookで認証したりユーザー情報を登録したりしてみたかった

Facebookで認証+アクセストークンを使ってユーザーの情報を取得して、

ユーザーが所得する学校や会社でグループを作って所属させる」

ということをやりたくて、JavaScriptやKoalaとか調べてたんだけど、

JavaScriptFacebookごとログアウトするし、

Koalaがuse_ssl=メソッドがFaradayにありませんという旨のメッセージを吐いて動かないので、

OmniAuthで認証機能を作る - RuntimeError

FacebookのOAuth AccessTokenについて - blogですかい

ソーシャルメディアAPIリファレンス - Facebook

あたりを見ながら、「Deviseはまだ自分にはややこしいから使いたくないな」と思って、

結局

Railscasts - Simple Omniauth

と同じようにとりあえず単純な認証にしました。

 

その後、認証のときに取得できているアクセストークンを使ってfacebook上のデータにアクセスする部分を、KoalaからFBGraphに切り替えて30分くらいでコンソール上で学歴の取得まで確認できて少し萎えたというのが現状です。

raise request.env["omniauth.auth"].yaml_tag

の出力見てると、職歴と学歴はこれFBGRAphなしでもそのまま取れているのでは?という感じもありますが。

 

アクセストークンについてまだよく分かってない感じがするので、この次どうやって進めるかな、というのは、

[etc] FacebookのOAuthのアクセストークンについて - Study08.net 対シンバシ殲滅用人型機動兵器

あとで、こことかいろいろ読みながら考えようと思います。

 

だけど明日はとりあえず、ページネーションを、データベースから取ってきた項目の数が多かったら自動的に所定の数で表示を区切ってくれるという風にしか理解してないのが不安なので、その辺からチュートリアル読もうと思います。

あと、gitとかgitとかgitとか。

 

以下、いくつか、まとめ。

今更かい!というのはお約束です。未知の知というか。

binding.pryを使う

必要なgemをインストールする。

group :development,:test do
  ....
  gem 'pry-rails'
  gem 'pry-nav'
  gem 'pry-doc'
  gem 'pry-remote'
end

とGemfileに足してから

bundle install

 

処理を止めてデバッグしたい所に

binding.pry

と入れると、その箇所でローカルサーバ動かしているターミナルが

周辺のコードを表示しながら止まる。

変数の値を確認したりする。もう止めなくてよくなったらexitと入力すると処理が先にすすむ。

 

データベースに新しい項目を追加する

新しいマイグレーションを追加してテーブルを変更 - Ruby on Rails入門

既に生成してあるテーブルに対して、

新しい項目を追加したり、indexをつけたり、unique属性をつけたり、

既にmigrateしたモデルを変更するときは

rails generate migration xxx

をターミナルで実行して、

新しくmigrationファイルを作成。そのdb/migrate内にある{time_stamp}_xxxの中に

def change
    add_index :users, :facebook_uid, unique: true
  end

のように変更内容を書いて保存してから、

rake db:migrate

をする。RAILS_ENV=testのほうも忘れないようにする。

 

環境変数を設定する

恐ろしい話、一番最初は直にアプリケーションIDとか書いてました。

rails_configで環境毎に定数を管理しよう! - SCRABBLE☆NOTE