を許可した後、フォームをsign_inにリダイレクトします。私はこのチュートリアルhttps://www.youtube.com/watch?v=X6tKAUOMzCs&t=42sに従っていますが、私はどこでもオンラインで見つけることができないというエラーが発生しています。実際にはエラーではありません。Twitterからアプリを承認した後、sign_inフォームにリダイレクトされます。Railsの5工夫とOmniAuth Twitterのセットアップは、私は私の<strong>工夫</strong>の上に<strong>OmniAuth-ツイッター</strong>をインストールしようとしているアプリ
routes.rbを
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, "ididputmykeyhere", "ididputmykeyhere"
end
omniauth.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :omniauth_callbacks => "omniauth_callbacks" }
resources :posts
resources :categories
root 'posts#index'
end
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def twitter
# Show me what I get from Twitter
raise request.env["omniauth.auth"].to_yaml
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
omniauth_callbakcs_controller.rb user.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:twitter]
has_many :posts
end
config.omniauth :twitter, ENV["ididputmykeyhere"], ENV["ididputmykeyhere"]
devise.rb私は、私の見解にuser_twitter_omniauth_authorize_pathリンクを置きます。これは、Twitterの承認ページにリダイレクト
- は✅
- 私はrequest.env [ "omniauth.auth"]を調達することを期待してい
- ✅Twitterからアプリを承認するが、それはローカルホストにリダイレクト:3000 /ユーザー/私は私が何をしないのです、フォーム❌それは私がデータベース・コードに保存する書き込みをされる私のomniauth_callbacks_controllerをスキップのような役割を果たし
に看板が見え sign_in?ありがとうございます!
++++++++++++++++++++++ UPDATE +++++++++++++++++++ +++
私はomniauth_callbakcs_controller.rbにdefの失敗を追加しました。私はそのアプリケーションがそれを実行しているのを見ています。
def failure
raise request.env["omniauth.auth"].to_yaml
flash[:error] = 'There was a problem signing you in. Please register or try signing in later.'
redirect_to root_path
end
こんにちはKevin、私もその記事を調べましたが、もう一度私はこの時点で立ち往生しています。私は**を追加しました:omniauthable、:omniauth_providers => [:twitter] ** user.rb file btw – Designer
こんにちは、あなたはまだユーザーを見つけるか作成する必要があります。その後、あなたの 'twitter'アクションで' sign_in_and_redirect @ user'を呼び出すことができます( 'env [" omniauth.auth "]'から '@ user'を定義してください) –