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

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

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

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Ruby on Rails

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

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

0回答

264閲覧

facebookアカウントAuthログインで facebookからのリダイレクトでエラーが発生する。(facebook for developers設定ミス?)

YRails

総合スコア13

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Ruby on Rails

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

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

0クリップ

投稿2019/03/29 09:45

前提・実現したいこと

Railsでwebアプリケーションを開発しています。
devise と omniauth-facebookのgemでfacebookアカウントでのログインを実装したいと考えております。

ローカルPCでのdevelopment環境ではうまくfacebook認証が動作するのですが、
AWSで立ち上げているstaging環境ではエラーが出てしまいます。

development環境では成功していることから、facebook for developersでの設定が間違っている可能性が高いと思っております。
設定で間違っている点がありますでしょうか??

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

facebookログインボタン( <%= link_to "Facebookログイン", user_facebook_omniauth_authorize_path %> )をクリックすると
facebookへとリダイレクトはされるのですが
(chromeのシークレットウィンドウで開いているためfacebookにログインする必要アリ↓)

イメージ説明

ログインすると以下のエラーメッセージが表示されてしまいます。

イメージ説明

確認する限りエラーに書かれている設定はクリアしているはずですが、何故か上手くいきません。
以上の動作から、
facebookへのリダイレクトまでは上手く行ってるが、facebookからのリダイレクトで失敗している認識です。

試したこと

(エラーメッセージにも書かれてますが)
以下の記事を見つけ、「有効なOAuthリダイレクトURI」欄にリダイレクトURLを完全一致させる必要があることは理解しました。
https://damelog.com/sns/facebook/facebook-login-redirect-url-becoming-strict-matching/

しかし、URLを完全一致で入力したはずにも関わらず、上記エラーが発生しています。
完全一致のURLはxxxxxxxxxxxxx/users/auth/facebook/callback である認識ですが、他にも可能性のあるURLも入力しています。
イメージ説明

omniauth-facebookでのコード

↓user.rb

class User < ApplicationRecord ・ ・ ・ #omniauth-callback def self.from_omniauth(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 # assuming the user model has a name # user.picture = auth.info.image # assuming the user model has an image # If you are using confirmable and the provider(s) you use validate emails, # uncomment the line below to skip the confirmation emails. user.skip_confirmation! end end end

↓omniauth_callbacks_controller.rb

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def facebook # You need to implement the method below in your model (e.g. app/models/user.rb) @user = User.from_omniauth(request.env["omniauth.auth"]) if @user.persisted? sign_in_and_redirect @user, event: :authentication #this will throw if @user is not activated 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 def failure redirect_to root_path end end

補足情報(FW/ツールのバージョンなど)

ruby: 2.5.3
rails: 5.2.2
devise: 4.6.1
omniauth-facebook: 5.0.0

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問