私は Ryan bates のキャスト #225 devise と omniauth の改訂版をフォローしています...リンクをクリックすると、Twitter でサインアップすると、
api.twitter.com/oauth/authenticate?oauth_token=vJQeSrxYa6gXSFUspRP9wuzgHTgGRDoN5YjenRGnDcU
「バットマン ファンサイトにアカウントの使用を許可しますか?」と表示されているページ [サインイン] をクリックしても何も起こらず、自分のサイトに送り返されず、明らかにログインもサインアップもしていません。
URL がhttps://api.twitter.com/oauth/authenticateに変わります
しかし、それ以外は何も起こらず、これに何時間も取り組んでおり、可能な限りすべての提案に従っています.....
助けてください
devise.rb
config.omniauth :twitter, ENV["I PUT MY CONSUMER KEY HERE"], ENV["I PUT MY CONSUMER PASSWORD HERE"]
私も持っています
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, 'I PUT MY CONSUMER KEY HERE', 'I PUT MY CONSUMER PASSWORD HERE'
end
omniauth.rb を削除すると、devise.rb に既にあるため機能するという提案をいくつか聞きましたが、OMNIAUTH.RB を削除すると、301 Unathorized エラーが発生し、TWITTER SIGN IN PAGE に送られません... ...
devise.rb (ファイル全体ではなく vonfig.omniauth の部分だけ) のコードを削除して omniauth.rb を保持すると、ルーティング エラーが発生します。
これが私の
user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :username
validates_presence_of :username
validates_uniqueness_of :username
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.username = auth.info.nickname
end
end
def self.new_with_session(params, session)
if session["devise.user_attributes"]
new(session["devise.user_attributes"], without_protection: true) do |user|
user.attributes = params
user.valid?
end
else
super
end
end
def password_required?
super && provider.blank?
end
def update_with_password(params, *options)
if encrypted_password.blank?
update_attributes(params, *options)
else
super
end
end
end
私の omniauth_callbacks_controller.rb
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def all
user = User.from_omniauth(request.env["omniauth.auth"])
if user.persisted?
flash.notice = "Signed in!"
sign_in_and_redirect user
else
session["devise.user_attributes"] = user.attributes
redirect_to new_user_registration_url
end
end
alias_method :twitter, :all
end
ルート.rb
devise_for :users, path_names: {sign_in: "login", sign_out: "logout"},
controllers: {omniauth_callbacks: "omniauth_callbacks"}
私の宝石ファイルで
gem 'omniauth-twitter', :github => 'arunagw/omniauth-twitter'
omniauth gemも追加しようとしましたが、何もしませんでした
そして私の見解では、私は持っています
= link_to "Sign in with Twitter", user_omniauth_authorize_path(:twitter)
Twitter 開発者サイトで登録したサイトにコールバック URL を追加しました
そして、アプリケーションタイプを読み取りと書き込みにしました... READ ONLYを試しましたが、401エラーが発生し、READ WRITEとACCESS FIRECT MESSAGESも試しましたが、何も機能しません
実際の Twitter サインイン ページに移動する唯一の方法は、READ AND WRITE をチェックした場合です。
誰か提案があれば助けてください
ありがとうございました