Я пытаюсь разрешить пользователям входить через Twitter, но я получаю сообщение об ошибке: Введите ошибку в SessionController. Я получаю эту ошибку всякий раз, когда меня перенаправляют на: https://api.twitter.com/oauth/authenticate, чтобы пользователь мог пройти аутентификацию. Я должен быть перенаправлен на страницу «Авторизовать приложение Twitter» после проверки подлинности, но я получаю полную ошибку: «TypeError in SessionsController # create: класс/объект класса ожидается». Я использую omniauth_twitter и изобретаю драгоценные камни для этой функции. Я пропустил что-то, что мне нужно сделать для разработки в файле routes.rb, возможно?TypeError в SessionsController # create при попытке войти в систему из API Twitter с помощью omniauth
Также он делает это с помощью метода create (в SessionController), поскольку он в конечном итоге перенаправляется на корневую страницу, но я не вижу пользователя, созданного в базе данных.
Controller Session
class SessionsController < ApplicationController
def create
@user = User.find_or_create_from_auth_hash(auth_hash)
session[:user_id] = @user.id
redirect_to root_path
end
protected
def auth_hash
request.env['omniauth.auth']
end
end
пользователя Модель
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
before_create :generate_auth_token
def self.find_or_create_from_auth_hash(auth_hash)
user = where(provider: auth_hash.provider, uid: auth_hash.uid).first_or_create
user.update(
name: auth_hash.info.name,
avatar: auth_hash.info.image,
token: auth_hash.credentials.token,
secret: auth_hash.credentials.secret)
user
end
def generate_auth_token
loop do
self.auth_token = SecureRandom.base64(64)
break unless User.find_by(auth_token)
end
end
end
routes.rb
Rails.application.routes.draw do
get 'auth/:provider/callback', to: 'sessions#create'
resources :tweets
get 'signup/new'
get 'signup/create'
devise_for :users
resources :contacts
end
Также Пользователь не отображается в базе данных должно быть сохранено вниз
Loading production environment (Rails 4.2.1)
[1] pry(main)> User.all
User Load (3.2ms) SELECT "users".* FROM "users"
=> []
Спасибо за ваш ответ. Да, я попробовал это раньше и взял его, и он по-прежнему не спасет пользователя в базе данных. Когда я пошел на консоль рельсов, я даже не вижу пользователя в моей модели пользователя: Загрузка производственной среды (Rails 4.2.1) [1] pry (main)> User.all Пользовательская нагрузка (3,2 мс) SELECT «users». * FROM «users» => [] – SaintClaire33
Возможно ли это с помощью Devise? – SaintClaire33
Я до сих пор не перенаправлен на страницу приложения авторизации Twitter. Может ли кто-нибудь пролить свет? – SaintClaire33