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

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

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

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1081閲覧

TwitterAPIで認証機能を導入 ArgumentError

koh-s

総合スコア9

Devise

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/04/22 06:38

前提・実現したいこと

現在、railsでdeviseを使用してtwitterAPIの連携をはかっています。
成したいこととしましては、twitterログイン認証させるために参考記事を使用して実装していく中で下記のエラーに遭遇し、解決策がわからない状況でございます。
参考記事:https://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74#twitter%E3%81%A7%E8%AA%8D%E8%A8%BC%E3%81%99%E3%82%8B

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

wrong number of arguments (given 2, expected 0..1)

イメージ説明

該当のソースコード

ruby

1[omniauth_callbacks_controller.rb] 2 3class OmniauthCallbacksController < Devise::OmniauthCallbacksController 4 def twitter 5 @user = User.from_omniauth(request.env["omniauth.auth"].except("extra")) 6 7 if @user.persisted? 8 flash.notice = "ログインしました!" 9 sign_in_and_redirect @user 10 else 11 session["devise.user_attributes"] = @user.attributes 12 redirect_to new_user_registration_url 13 end 14 end 15end

ruby

1[user.rb] 2 3class User < ApplicationRecord 4 # Include default devise modules. Others available are: 5 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 6 devise :database_authenticatable, :registerable, 7 :recoverable, :rememberable, :trackable, :validatable, 8 :confirmable, :lockable, :timeoutable, :omniauthable, omniauth_providers: [:twitter] 9 10 has_one :profile, dependent: :destroy 11 12 def self.from_omniauth(auth) 13 where(provider: auth["provider"], uid: auth["uid"]).first_or_create do |user| 14 user.provider = auth["provider"] 15 user.uid = auth["uid"] 16 user.username = auth["info"]["nickname"] 17 end 18 end 19 20 def self.new_with_session(params, session) 21 if session["devise.user_attributes"] 22 new(session["devise.user_attributes"], without_protection: true) do |user| 23 user.attributes = params 24 user.valid? 25 end 26 else 27 super 28 end 29 end 30end 31

試したこと

エラー文としては「引数が現状2個あるけど本当は0~1個で良いんだけど。。」と言われているように読み取れるのですが、具体的な手立てのレパートリーや発想が乏しく、難儀しています。
試しにwithout_protection: trueを外してみるとサインアップへ遷移されますが、今後の挙動で何か不具合がある様な気がして気が気でありません。。

ruby

1def self.new_with_session(params, session) 2 if session["devise.user_attributes"] 3 new(session["devise.user_attributes"]) do |user| 4 user.attributes = params 5 user.valid? 6 end 7 else 8 super 9 end 10 end

大変申し訳ありませんが、解決に向けてヒントや解決案をいただけますと幸いでございます。
何卒、よろしくお願い致します。

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

rails 5.1.6
sqlite3
cloud9

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問