IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

sorcery で GitHub ログインしてみる

はじめに

以下のリンクを参考に sorcery で GitHub ログインを実装してみる。

 

使ってみる

サンプル用のプロジェクトを作成する。

 

gem をインストールする。

  • echo 'gem "sorcery"' >> Gemfile
  • echo 'gem "figaro"' >> Gemfile
  • bundle

 

sorcery の初期設定を実行する。

  • bin/rails g sorcery:install
  • bin/rails g sorcery:install external --only-submodules

 

User モデルに name 属性を追加して、コントローラとビューを作成する。

  • bin/rails g migration AddNameToUsers name:string
  • bin/rails g scaffold User --migration false

 

マイグレーションを実行する。

 

GitHub でアプリの登録を行う。

 

上記の URL でアクセスしたら、右上の「New OAuth App」ボタンをクリックして、アプリの登録を行う。

f:id:matt-note:20190707230510p:plain

 

これで Client ID と Client Secret を取得できる。

f:id:matt-note:20190707200850p:plain

 

環境変数の管理用に figraro の初期設定をする。

  • bundle exec figaro install

 

config/application.yml で環境変数の設定を行う。

f:id:matt-note:20190707201207p:plain

-> ここで設定した値は、アプリから ENV["GITHUB_ID"] のようにして取得できるようになる。

 

config/initializers/sorcery.rb に設定を追加する。

f:id:matt-note:20190707200328p:plain

f:id:matt-note:20190708123859p:plain

f:id:matt-note:20190707201716p:plain

 

Authenticationモデルを作成する。

  • bin/rails g model Authentication --migration=false


app/models/user.rb に設定を追加する。

f:id:matt-note:20190707203332p:plain

 

app/models/authentication.rb に関連を追加する。

f:id:matt-note:20190707231934p:plain

 

app/views/layouts/application.html.erb にログイン用のリンクを配置する。

f:id:matt-note:20190707233951p:plain
 

あとは、公式の Wiki を参考にすれば作成できる。[ link ]

oauth用のコントローラーを作成する。

  • bin/rails g controller Oauths oauth callback

 

app/controllers/oauths_controller.rb

f:id:matt-note:20190707230632p:plain

 

config/routes.rb

f:id:matt-note:20190707234256p:plain

 

サーバーを起動して、「GitHubログイン」のリンクをクリックする。

f:id:matt-note:20190707234448p:plain

-> sorcery で GitHub ログインを実装できた。

 

user_info_mapping がうまくいかない?

コンソールを起動して、User を確認してみる。

f:id:matt-note:20190708124101p:plain

-> email に名前が入りこんで、name が nil になる。

 

User に name 属性を作成して、config/initializers/sorcery.rb で email に email、name に name を割り当てたが、うまくいかない。

 

この点を解決できなかった。