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

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

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

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

OAuth

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

Twitter

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

Q&A

解決済

2回答

1947閲覧

railsでtwitterAPIを使ったoauth認証の実装がうまくいかない

funahuna

総合スコア16

Ruby

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

OAuth

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

Twitter

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

0グッド

0クリップ

投稿2018/11/29 05:29

編集2018/11/29 13:22

初めて質問しますので多々至らぬところがあると思いますがよろしくお願いします。
バージョン
ruby2.5.1
5.2.1

railsでdeviceとtwitterAPIを使いoauth認証しようとしています。
本来ならviewに設定したリンク先に飛ぶとtwitetr認証でログインできると思うのですがうまく行きません。
ご教授お願いします。
自分のやったこと
quitaの記事を色々試してみました

controller

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def twitter

@user = User.find_for_twitter_oauth(request.env["omniauth.auth"], current_user) if @user.persisted? set_flash_message(:notice, :success, kind: "Twitter") if is_navigational_format? sign_in_and_redirect @user, event: :authentication else session["devise.twitter_data"] = request.env["omniauth.auth"].except("extra") redirect_to new_user_registration_url end end

end

class Users::RegistrationsController < ApplicationController
def build_resource(hash={})
hash[:uid] = User.create_unique_string
super
end
end

view

<p><%= notice %><%= alert %></p>

<% if user_signed_in? %>
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to 'Twitterでサインアップしてね', user_twitter_omniauth_authorize_path %>
<% end %>

model
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,:omniauthable, omniauth_providers: %i(google facebook twitter)

def self.find_for_google(auth) user = User.find_by(email: auth.info.email) unless user user = User.new(email: auth.info.email, provider: auth.provider, uid: auth.uid, password: Devise.friendly_token[0, 20], ) end user.save user end end

config
Rails.application.routes.draw do
root :to => 'oauth_test#index'

devise_for :users, controllers: {
registrations: "users/registrations",
omniauth_callbacks: "users/omniauth_callbacks"
}
end

.env
api key
secret keyを設定しました

エラー
Started GET "/users/auth/twitter" for 127.0.0.1 at 2018-11-29 14:29:50 +0900
I, [2018-11-29T14:29:50.785451 #19864] INFO -- omniauth: (twitter) Request phase initiated.

OAuth::Unauthorized (403 Forbidden):

oauth (0.5.4) lib/oauth/consumer.rb:236:in token_request' oauth (0.5.4) lib/oauth/consumer.rb:155:in get_request_token'
omniauth-oauth (1.1.0) lib/omniauth/strategies/oauth.rb:28:in request_phase' omniauth-twitter (1.4.0) lib/omniauth/strategies/twitter.rb:61:in request_phase'
omniauth (1.8.1) lib/omniauth/strategy.rb:224:in request_call' omniauth (1.8.1) lib/omniauth/strategy.rb:187:in call!'
omniauth (1.8.1) lib/omniauth/strategy.rb:168:in call' omniauth (1.8.1) lib/omniauth/strategy.rb:190:in call!'

回答してもらった記事の通りやってみたのですがまだうまく行きません
追記  twitter developの設定
Website URL
https://developer.twitter.com/en/apps/15986426
Sign in with Twitter
Disabled
Callback URL
http://127.0.0.1:3000/users/auth/twitter/callback
http://localhost:3000/auth/twitter/callback

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

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

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

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

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

guest

回答2

0

一歩前進しました。
developでcallback URLを2つ設定
config/device にcallback urlの追加!
これでいけました!

https://qiita.com/gifu_w/items/41d2c868317edea5045b
https://saruwakakun.com/memo/omniauth-twitter

投稿2018/11/29 14:11

funahuna

総合スコア16

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

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

0

ベストアンサー

パット見た感じ、Request phase initiatedですので、コールバックURLの設定問題のようです

以下の記事が似たような質問と対応のようなので
試してみてください

https://saruwakakun.com/memo/omniauth-twitter

→Twitter AppsのSettingで、「Callback URLs」の設定を変更する

https://qiita.com/gifu_w/items/41d2c868317edea5045b

https://teratail.com/questions/127981

また、コードの部分はマークダウン対応で記載いただくと分かりやすく表示されます。

詳細はテラテイルで質問を記述する際の左下のMarkdown記法を使うと回答が得られやすくなります を押すと表示されます

投稿2018/11/29 07:23

編集2018/11/29 07:30
abab7200

総合スコア120

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

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

funahuna

2018/11/29 08:04

回答ありがとうございます。 これからマークダウンで書くことを心がけます! quiitaの記事を参考にcall backを設定してみましたが 同じエラーが出てしまいます config/initializers/device.rb ```html config.omniauth :twitter, ENV["TWITTER_ID_DEVELOPMENT"], ENV["TWITTER_SECRET_DEVELOPMENT"], scope: 'email', display: 'popup', info_fields: 'name, email', callback_url: "http://127.0.0.1:3000/users/auth/twitter/callback" ```
funahuna

2018/11/29 08:05

あれれマークダウンになってないですねToT
abab7200

2018/11/29 09:08

コメント欄の内容はマークダウン化されないので、質問された内容をマークダウン化していただけますでしょうか?
abab7200

2018/11/29 09:11

こちらの記事の https://saruwakakun.com/memo/omniauth-twitter 「Callback URLs」の変更で解決欄の development環境を試してもえますでしょうか? ※Production環境の場合の設定は必要なし また、上記で動かない場合はツイッター側の設定のWebSiteのURLとコールバックのURLを質問についきしてください
funahuna

2018/11/29 13:23

試してみましたがうまく行きませんでした!
funahuna

2018/11/29 13:27

ああああああああああああああああああああああああああああああああああ すいません一歩前進しました!!!! 別のエラーが出てくるようになりました!!
abab7200

2018/11/29 13:54

前進してよかったです。 可能でしたら別の困っている方の為に 改善した内容を質問の内容に追記いただければと存じます。 また、前進したとのことで追加エラーで質問が発生した場合はについては新規投稿をお願いします。
funahuna

2018/11/29 14:09

承知しました!!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問