0

devise と omniauth をセットアップして認証し、facebook でログインした後、ユーザーを作成し、ユーザーのパスワードを生成します

user = User.new :fullname => auth_hash['extra']['raw_info']['name'], 
:email =>auth_hash['extra']['raw_info']['email'], 
:encrypted_password => Devise.friendly_token[0,20]

しかし、Facebook ユーザー (http://localhost:3000/users/sign_in) でログインしようとすると、エラーが発生します。

BCrypt::Errors::InvalidHash in Devise::SessionsController#create 
invalid hash

リクエスト

パラメーター:

{"utf8"=>"✓",
 "authenticity_token"=>"/xA0goLirKlI2YWSLSMQk+3a8xDrVmrhqIjhILh0OME=",
 "user"=>{"email"=>"xxx@gmail.com",
 "password"=>"[FILTERED]",
 "remember_me"=>"1"},
 "commit"=>"Sign in"} 
4

1 に答える 1

0

Devise はデフォルトで bcrypt の暗号化されたパスワード アルゴリズムを使用するため、パスワードの暗号化されたバージョンを手動で入力しようとすると問題が発生すると推測されます。:encrypted_pa​​ssword ではなく、単純に :password の値を設定してみましたか? 次のように:

user = User.new :fullname => auth_hash['extra']['raw_info']['name'], 
:email =>auth_hash['extra']['raw_info']['email'], 
:password => Devise.friendly_token[0,20]
于 2012-06-04T00:46:28.293 に答える