かしいさんのはじめて個人開発

お笑いライブ検索サイト「ワラリー!」を運営しているフリーのWEBエンジニアです。超ド初心者がつまづきがちな、個人開発にまつわるあれこれを書いていきます。

Twitter連携のログイン機能を作る(【gem】twitter-omniauth)

f:id:warallyinfo:20180330032157p:plain

やりたいこと

  • Twitterログインによるユーザー管理機能の実装
  • メールアドレス認証は不要

メールアドレス認証

gem 'devise'

・サインアップしようとするとエラーが出る

エラー:NameError in Devise::RegistrationsController#create
undefined local variable or method `confirmed_at' for #User:**************** Did you mean? confirmed?
解決法:Userモデルに#Confirmableのカラムを足す
(devise :confirmableをroutesに入れている場合)

qiita.com

 

エラー:* Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

解決法:
config > environment > development.rbに追記 

pgnote.net

Twitterログイン

gem 'omniauth'
gem 'omniauth-twitter'

・方法

qiita.com

・新規登録/ログインボタンの押下後に、またdeviseのログイン画面が表示される(ログインページに戻ってしまう)

エラー原因:ユーザー情報をDBに登録できていない
解決法:app > models > User.rbに追記

1. emailアドレスを自動で設定する処理を入れる
2. emailアドレスをそもそも無視する
3. devise.rbから :validatable を削除する
などのパターンがある。 

teratail.com

teratail.com

stackoverflow.com

補足:Railsを日本語化する

deviseのgemを入れるだけだとエラーメッセージが英語で表示されるので、日本語化する。

qiita.com

モデル名を日本語化する

qiita.com

 

NoMethodError (undefined method `deep_symbolize_keys' for "文字列":String):

エラー原因:ja.ymlのインデントが間違っている

解決法:要素ごとにインデントを半角スペース2個下げる

github.com

 

ユーザーIDが取得できない

undefined method `id' for nil:NilClass

エラー原因:ログインできておらず、ユーザーIDがnullになっている

teratail.com

保存保存