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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

3回答

3683閲覧

Ruby on Railsでfacebook認証が通らない

kenny_sayama

総合スコア1036

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/04/25 14:38

###前提・実現したいこと
実現したいこととしては、以下のgemを使ってfacebook認証を実装したいとおもっています。

gem 'devise' gem 'omniauth' gem 'omniauth-facebook' gem 'dotenv-rails'

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

deviseを使ってコントローラー、モデル、ビューの生成は終わっています。
モデル名はuserです。
どこを直しても以下のエラーが出てきます。

The parameter app_id is required

###該当のソースコード

ruby

1//config/initializers/devise.rb 2config.omniauth :facebook, ENV['FACEBOOK_APP_ID', ENV['FACEBOOK_APP_SECRET'] 3

ruby

1//.env 2FACEBOOK_APP_ID="123456789" 3FACEBOOK_APP_SECRET="123456789abcdefg"

ruby

1// models/user.rb 2 3class User < ApplicationRecord 4 # Include default devise modules. Others available are: 5 # :confirmable, :lockable, :timeoutable and :omniauthable 6 attr_accessor :login 7 devise :database_authenticatable, :registerable, 8 :recoverable, :rememberable, :trackable, :validatable, :omniauthable 9 10 11 def self.find_for_facebook_oauth(auth) 12 13 user = User.where(provider: auth.provider, uid: auth.uid).first 14 unless user 15 user = User.create( name: auth.extra.raw_info.name, 16 provider: auth.provider, 17 uid: auth.uid, 18 email: auth.info.email, 19 token: auth.credentials.token, 20 password: Devise.friendly_token[0,20] ) 21 end 22 user 23 end 24end

ruby

1// app/controllers/users/omniauth_callbacks_controller.rb 2 3class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 4 5 def facebook 6 @user = User.find_for_facebook_oauth(request.env["omniauth.auth"]) 7 8 if @user.persisted? 9 sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated 10 set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? 11 else 12 session["devise.facebook_data"] = request.env["omniauth.auth"] 13 redirect_to new_user_registration_url 14 end 15 end 16 17 18end

ruby

1//config/routes.rb 2 3Rails.application.routes.draw do 4 5 devise_for :users, controllers: { 6 omniauth_callbacks: "users/omniauth_callbacks" 7 } 8 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 9 10 get '/auth/:provider/callback', to: 'users#create', as: :auth_callback 11 get '/auth/failure', to: 'users#auth_failure', as: :auth_failure 12end

facebookアプリ情報

Site URL: http://hoge.com:3000/

Valid OAuth redirect URIs: http://hoge.com:3000/auth/facebook/callback

一通り試してみて動かず、Facebookアプリの登録で何か別に設定が必要かなど教えていただきたいです。。。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayabusakk

2017/05/09 05:11

_SECRETconfig.omniauth :facebook, ENV['FACEBOOK_APP_ID', ENV['FACEBOOK_APP_SECRET']のところに、ご自身が取得された'facebook_APP_ID'と_SECRETの数字、英数字は入れてありますか?上のコードを見ると、それがわからないです。
kenny_sayama

2017/05/14 09:27

それは入れてあります!
guest

回答3

0

上記ほぼ同じ状況になりましたが、railsを再起動したら、いけました。
サーバーを一度とめ、ターミナルで別のタブを立ち上げ、 rails server したら、問題なくできました。
環境変数が正しく読まれてなかったのかもしれないですね。

投稿2017/12/19 10:35

hiroki_tkg

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

config/initializers/devise.rb
がロードされてるタイミングで環境変数が正しいものがセットされてます?

put ENV['FACEBOOK_APP_ID']
とかを仕込んで確認してみてもよいかと。

Dotenvですよね?そちらの問題かもしれないかと思いまして。

投稿2017/05/11 03:05

h_daido

総合スコア824

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Ruby

1config.omniauth :facebook, ENV['FACEBOOK_APP_ID', ENV['FACEBOOK_APP_SECRET']


APP_ID側に、] の閉じ忘れがあります。

投稿2017/04/28 04:02

NobutakaKomaki

総合スコア114

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenny_sayama

2017/05/03 17:33

回答いただきありがとうございます。 そちらは既に修正してあり、試しているのですが、うまくいかないです。
NobutakaKomaki

2017/05/05 08:06 編集

//config/initializers/devise.rbに、 require 'omniauth-facebook' は、記載していますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問