初めて質問しますので多々至らぬところがあると思いますがよろしくお願いします。
バージョン
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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。