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

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

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

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

Ruby

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Facebook

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

受付中

RailsでDeviseとFacebookログインを実装したところ、リダイレクトループが発生する

YumaYamada
YumaYamada

総合スコア0

Devise

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

Ruby

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Facebook

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0回答

0評価

1クリップ

2345閲覧

投稿2016/01/03 17:48

編集2022/01/12 10:55

Rails4にてログイン機能の実装をしています。
Deviseによる通常の会員登録画面からサイトの会員トップページに飛ぶよう設定しており、またFacebookログインにおいてもそのようにしています。

しかし、sign_in及びsign_up、Facebook認証にアクセスすると、

このウェブページにはリダイレクト ループが含まれています
ERR_TOO_MANY_REDIRECTS

というエラーが出てしまいます。
redirect_to,root :toの設定先、またはパスに問題があるのではないかと考えているのですが、解決しないため、投稿させていただきました。
下記に該当箇所及びパスの画像を載せますので、よろしくお願いいたします。

**config/routes.rb**

Ruby

Rails\.application\.routes\.draw do resources :users authenticated :user do root :to => 'users#index' end unauthenticated :user do devise_scope :user do get "/" => "devise/sessions#new" end end resources :conversations do resources :messages end devise_for :users, :controllers => { sessions: 'users/sessions', registrations: 'users/registrations', omniauth_callbacks: 'users/omniauth_callbacks'} end

**controllers/users_controller.rb**

Ruby

class UsersController < ApplicationController before_filter :authenticate_user! before_action :set_user, only: \[:show, :edit, :update, :destroy\] # GET /users # GET /users\.json def index @users = User\.where\.not\("id = \?",current_user\.id\)\.order\("created_at DESC"\) @conversations = Conversation\.involving\(current_user\)\.order\("created_at DESC"\) end # GET /users/1 # GET /users/1\.json def show end # GET /users/new def new @user = User\.new end # GET /users/1/edit def edit end # POST /users # POST /users\.json def create @user = User\.new\(user_params\) respond_to do |format| if @user\.save format\.html { redirect_to @user, notice: 'User was successfully created\.' } format\.json { render :show, status: :created, location: @user } else format\.html { render :new } format\.json { render json: @user\.errors, status: :unprocessable_entity } end end end # PATCH/PUT /users/1 # PATCH/PUT /users/1\.json def update respond_to do |format| if @user\.update\(user_params\) format\.html { redirect_to @user, notice: 'User was successfully updated\.' } format\.json { render :show, status: :ok, location: @user } else format\.html { render :edit } format\.json { render json: @user\.errors, status: :unprocessable_entity } end end end # DELETE /users/1 # DELETE /users/1\.json def destroy @user\.destroy respond_to do |format| format\.html { redirect_to users_url, notice: 'User was successfully destroyed\.' } format\.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions\. def set_user @user = User\.find\(params\[:id\]\) end # Never trust parameters from the scary internet, only allow the white list through\. def user_params params\.require\(:user\)\.permit\(:name, :email,:part_1,:user_id,:Birth_date,:gender,:start_at_part_1,:start_at_part_2,:current_place,:start_at_band\) end end

**controllers/users/omniauth_callbacks_controller.rb**

Ruby

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def facebook callback_from :facebook end def twitter callback_from :twitter end private def callback_from\(provider\) provider = provider\.to_s @user = User\.find_for_oauth\(request\.env\['omniauth\.auth'\]\) if @user\.persisted\? cookies\.permanent\[:xxx_logined\] = { value: @user\.created_at } flash\[:notice\] = I18n\.t\('devise\.omniauth_callbacks\.success', kind: provider\.capitalize\) sign_in_and_redirect @user, event: :authentication else if provider == 'twitter' session\["devise\.twitter_data"\] = request\.env\["omniauth\.auth"\]\.except\("extra"\) else session\["devise\.facebook_data"\] = request\.env\["omniauth\.auth"\] end redirect_to new_user_registration_url end end end

![rake routes](ae36a71af17e953775473ac8197be018.png)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Devise

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

Ruby

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Facebook

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。