Ruby on Rails 5.0.0.1で下記のエラーが出てしまいます。
Facebook から承認されませんでした。理由:Invalid credentials
FacebookのOauth認証画面で[ログイン]・[パスワード]を追加して、リダイレクト先の画面でこのような文言が出てきます。
検索したら、
http://totutotu.hatenablog.com/entry/2016/02/24/194153
ダウングレードが必要だということで、使っていたgem omniauth-facebookを下げてみたのですが...
gem 'omniauth-facebook', '~> 3.0.0'
やはり同じエラーが出てしまいました。
なぜでしょうか。
失礼いたしました。
##該当するソースコード
▼ User.rb
Ruby
1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :trackable, :validatable, 6 :omniauthable 7 8 class << self 9 def find_for_facebook_oauth(auth) 10 where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 11 user.email = auth.info.email 12 user.password = Devise.friendly_token[0,20] 13 user.name = auth.info.name 14 end 15 end 16 17 def create_unique_string 18 SecureRandom.uuid 19 end 20 21 def create_unique_email 22 User.create_unique_string + "@example.com" 23 end 24 end 25end
▼ users/omniauth_callbacks_controller.rb
Ruby
1class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 2 def facebook 3 @user = User.find_for_facebook_oauth(request.env["omniauth.auth"]) 4 5 if @user.persisted? 6 sign_in_and_redirect @user, :event => :authentication 7 set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? 8 else 9 session["devise.facebook_data"] = request.env["omniauth.auth"] 10 redirect_to new_user_registration_url 11 end 12 end 13end
▼ Devise.rb
Ruby
1Devise.setup do |config| 2 config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'] 3end
▼ .env
FACEBOOK_APP_ID="XXXXXXXXX" FACEBOOK_APP_SECRET="XXXXXXXXXXXXXX"
▼ routes.rb
Ruby
1Rails.application.routes.draw do 2 devise_for :users, controllers: { sessions: 'users/sessions', registrations: 'users/registrations', omniauth_callbacks: 'users/omniauth_callbacks' } 3 root 'pages#index' 4 get 'pages/show' 5end
回答1件
あなたの回答
tips
プレビュー