質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Ruby

    9654questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    3342questions

  • RubyGems

    375questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

DeviseのFacebookログインを利用した際のパスワードが機能しない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 113

innjera

score 117

Devise/Facebookログインでのパスワードがivalidとなる

DeviseのFacebookログインを利用しています。
Userの登録変更(deviseのregistrations/edit)をするのに、
Deviseのデフォルトの設定通りですと、既存パスワードを入力する必要がるかと思いますが
Facebookに登録しているパスワードを入力すると以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

1 error prohibited this user from being saved:
Current password is invalid

該当のソースコード

###User.rb

# == Schema Information
#
# Table name: users
#
#  id                     :bigint(8)        not null, primary key
#  uid                    :string
#  provider               :string
#  name                   :string
#  first_name             :string
#  last_name              :string
#  image                  :string
#  nationality            :string
#  tel                    :string
#  email                  :string           default(""), not null
#  encrypted_password     :string           default(""), not null
#  reset_password_token   :string
#  reset_password_sent_at :datetime
#  remember_created_at    :datetime
#  sign_in_count          :integer          default(0), not null
#  current_sign_in_at     :datetime
#  last_sign_in_at        :datetime
#  current_sign_in_ip     :inet
#  last_sign_in_ip        :inet
#  failed_attempts        :integer          default(0), not null
#  unlock_token           :string
#  locked_at              :datetime
#  created_at             :datetime         not null
#  updated_at             :datetime         not null
#

class User < ApplicationRecord

  #### :confirmable,
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :lockable, :timeoutable, :trackable, :omniauthable

  has_many :bid_prices, dependent: :destroy
  has_many :bidded_engines, through: :bid_prices, source: :engine

  before_validation do
    if !name && first_name && last_name
      self.name = "#{first_name} #{last_name}"
    end
  end

  def self.find_for_oauth(auth)
    user = User.where(uid: auth.uid, provider: auth.provider).first

    unless user
      user = User.create(
        uid: auth.uid,
        provider: auth.provider,
        email: auth.info.email,
        # name: auth.info.name,
        first_name: auth.extra.raw_info.first_name,
        last_name: auth.extra.raw_info.last_name,
        password: Devise.friendly_token[0, 20],
        image: auth.info.image
      )
    end

    user

  end
end

試したこと

  • Facebookのパスワードに間違いはありません(何度も試した為)
  • Facebookログインを使わずにログインしたUserの場合、問題なく設定済パスワードを入力するとUser情報を変更できる為、変更機能(deviseのregistrations/edit)は問題なく機能しています。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Ruby

    9654questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    3342questions

  • RubyGems

    375questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。