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

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

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

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

Devise

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

Ruby

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

Facebook

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Q&A

0回答

1230閲覧

rails5(apiモード) × devise_token_auth × omniauth(FB)の実装について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Devise

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

Ruby

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

Facebook

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

0グッド

0クリップ

投稿2019/11/24 09:14

叶えたいこと

rails5(apiモード) × devise_token_auth × omniauth(Facebook)の処理で、無事にjsonを返却させたい

やったこと

Rails5のAPIモードでdevise_token_authとomniauthを使ったログインを試す
の記事を参考に、現在SNS認証を実装しています。

おおよその実装は上記のサイトと同じにして(users/omniauth_callbacks_controller:7のcreate_token_infoは実際のdevise_token_authのgemの実装になかったので削除)、変更点として、FacebookのSNS連携を実現させたいと思ったので、それ用の設定をomniauth.rbとomniauth.ymlに追加した程度です。

しかし、実際に動かしてみると、認証urlを叩き、DBの保存まではいくのですが、
render json: @resource, status: :ok
の処理のところで下記のエラーが発生しています。

原因がわからず詰まっておりまして、誰かアドバイスを頂けますと幸いです。
※json出力にはjbuilderではなく評判の良さそうなfast_json_apiを使用しています。
ちなみに、他の箇所で
render json: {test: 'test'}, status: :ok
と設定すると正しく返ってきたので、fast_json_apiの使い方が問題ではないような感じています。

エラー内容

NoMethodError (undefined method `downcase' for nil:NilClass): rack (2.0.7) lib/rack/utils.rb:469:in `[]=' rack (2.0.7) lib/rack/utils.rb:443:in `block in initialize' rack (2.0.7) lib/rack/utils.rb:443:in `each' rack (2.0.7) lib/rack/utils.rb:443:in `initialize' rack (2.0.7) lib/rack/utils.rb:437:in `new' rack (2.0.7) lib/rack/utils.rb:437:in `new' rack (2.0.7) lib/rack/conditional_get.rb:26:in `call' rack (2.0.7) lib/rack/head.rb:12:in `call' activerecord (5.2.3) lib/active_record/migration.rb:559:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (5.2.3) lib/active_support/callbacks.rb:98:in `run_callbacks' actionpack (5.2.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' railties (5.2.3) lib/rails/rack/logger.rb:38:in `call_app' railties (5.2.3) lib/rails/rack/logger.rb:26:in `block in call' activesupport (5.2.3) lib/active_support/tagged_logging.rb:71:in `block in tagged' activesupport (5.2.3) lib/active_support/tagged_logging.rb:28:in `tagged' activesupport (5.2.3) lib/active_support/tagged_logging.rb:71:in `tagged' railties (5.2.3) lib/rails/rack/logger.rb:26:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/request_id.rb:27:in `call' rack (2.0.7) lib/rack/runtime.rb:22:in `call' activesupport (5.2.3) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (5.2.3) lib/action_dispatch/middleware/static.rb:127:in `call' rack (2.0.7) lib/rack/sendfile.rb:111:in `call' rack-cors (1.1.0) lib/rack/cors.rb:100:in `call' railties (5.2.3) lib/rails/engine.rb:524:in `call' puma (3.12.1) lib/puma/configuration.rb:227:in `call' puma (3.12.1) lib/puma/server.rb:660:in `handle_request' puma (3.12.1) lib/puma/server.rb:474:in `process_client' puma (3.12.1) lib/puma/server.rb:334:in `block in run' puma (3.12.1) lib/puma/thread_pool.rb:135:in `block in spawn_thread'

環境

ruby:2.6.5
apiモードで作成
gemfileの中身

source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.5' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.3' # Use mysql as the database for Active Record gem 'mysql2', '>= 0.4.4', '< 0.6.0' # Use Puma as the app server gem 'puma', '~> 3.11' gem 'devise' gem 'omniauth' gem 'omniauth-facebook' gem 'omniauth-line' # クロスドメイン対策 # Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible gem 'rack-cors' gem 'devise-i18n' gem 'rails-i18n' gem 'devise_token_auth', github: 'lynndylanhurley/devise_token_auth' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder # gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use ActiveStorage variant # gem 'mini_magick', '~> 4.8' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false # Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible # gem 'rack-cors' gem 'fast_jsonapi' group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'rspec-rails' gem 'factory_bot_rails' gem 'dotenv-rails' end group :development do gem 'listen', '>= 3.0.5', '< 3.2' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' gem 'bullet' gem 'pry-byebug' gem 'rubocop', require: false gem 'rubocop-performance', require: false gem 'rubocop-rails', require: false end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問