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