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

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

ただいまの
回答率

90.53%

  • WordPress

    8705questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Ruby on Rails

    8577questions

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

  • Ruby on Rails 5

    2960questions

  • OAuth

    123questions

    OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

  • OAuth 2.0

    101questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Rails の Omniauth で Not found. Authentication passthru.

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 258

keniroya

score 96

下記のサイトの通り、WP OAuth Serverの認証を追加しようとしました。
https://objectpartners.com/2014/02/18/single-sign-on-with-rails-wordpress-and-oauth2/

必要なカラムも追加しています。

class ChangeColumnToUser < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :uid, :string
    add_column :users, :provider, :string
    add_column :users, :nickname, :string
    add_column :users, :website, :string
    add_column :users, :display_name, :string
  end
end

ここでサインインしようとしたとき

<a href="/users/auth/wordpress_oauth2">Sign in with WordpressOauth2</a><br />

このようなエラーがページに表示されました。

Not found. Authentication passthru.

routes.rbはこれだけですが

Rails.application.routes.draw do

  devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }  

  root 'dashboard#index'

  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

rake routesをしてみると、確かにusers/omniauth_callbacks#passthruもあります。

$ bundle exec rake routes
                                  Prefix Verb     URI Pattern                                                                              Controller#Action
                        new_user_session GET      /users/sign_in(.:format)                                                                 devise/sessions#new
                            user_session POST     /users/sign_in(.:format)                                                                 devise/sessions#create
                    destroy_user_session DELETE   /users/sign_out(.:format)                                                                devise/sessions#destroy
user_wordpress_oauth2_omniauth_authorize GET|POST /users/auth/wordpress_oauth2(.:format)                                                   users/omniauth_callbacks#passthru
 user_wordpress_oauth2_omniauth_callback GET|POST /users/auth/wordpress_oauth2/callback(.:format)                                          users/omniauth_callbacks#wordpress_oauth2
                       new_user_password GET      /users/password/new(.:format)                                                            devise/passwords#new
                      edit_user_password GET      /users/password/edit(.:format)                                                           devise/passwords#edit
                           user_password PATCH    /users/password(.:format)                                                                devise/passwords#update
                                         PUT      /users/password(.:format)                                                                devise/passwords#update
                                         POST     /users/password(.:format)                                                                devise/passwords#create
                cancel_user_registration GET      /users/cancel(.:format)                                                                  devise/registrations#cancel
                   new_user_registration GET      /users/sign_up(.:format)                                                                 devise/registrations#new
                  edit_user_registration GET      /users/edit(.:format)                                                                    devise/registrations#edit
                       user_registration PATCH    /users(.:format)                                                                         devise/registrations#update
                                         PUT      /users(.:format)                                                                         devise/registrations#update
                                         DELETE   /users(.:format)                                                                         devise/registrations#destroy
                                         POST     /users(.:format)                                                                         devise/registrations#create
                                    root GET      /                                                                                        dashboard#index
                      rails_service_blob GET      /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
               rails_blob_representation GET      /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
                      rails_disk_service GET      /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
               update_rails_disk_service PUT      /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
                    rails_direct_uploads POST     /rails/active_storage/direct_uploads(.:format)                                           active_storage/direct_uploads#create

しかし、controllerにpassthruアクションはありません。

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
    def wordpress_oauth2
        #You need to implement the method below in your model (e.g. app/models/user.rb)
        @user = User.find_for_wordpress_oauth2(request.env["omniauth.auth"], current_user)
        if @user.persisted?
            flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Wordpress Oauth2"
            sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
        else
            session["devise.wordpress_oauth2_data"] = request.env["omniauth.auth"]
            redirect_to new_user_registration_url
        end
    end
end

何がいけないのでしょうか?
分かる方、教えてください。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • WordPress

    8705questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Ruby on Rails

    8577questions

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

  • Ruby on Rails 5

    2960questions

  • OAuth

    123questions

    OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

  • OAuth 2.0

    101questions

    OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。