Здравствуйте!
Делаю аутентификацию через вконтакте. Использую гемы devise, omniauth, omniauth-vkontakte.
Когда кликаю на ссылку залогиниться через вконтакте, выходит сообщение-страница (
localhost:8080/users/auth/vkontakte.user):"Not found. Authentication passthru."
В инициализации devise.rb :
config.omniauth :vkontakte, 'APP_ID', 'APP_SECRET'
где 'APP_ID', 'APP_SECRET' - значения полученные при регистрации приложения на сервере вконтакте
модель user.rb :
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable,
:omniauthable, omniauth_providers: [:vkontakte]
attr_accessor :email, :password, :password_confirmation, :remember_me
attr_accessor :nickname, :provider, :url, :username
def self.find_for_vkontakte_oauth access_token
if user = User.where(:url => access_token.info.urls.Vkontakte).first
user
else
User.create!(:provider => access_token.provider, :url => access_token.info.urls.Vkontakte, :username => access_token.info.name, :nickname => access_token.extra.raw_info.domain, :email => access_token.extra.raw_info.domain+'<hh user=vk>.com', :password => Devise.friendly_token[0,20])
end
end
контроллер users/ominiauth_callbacks_controller.rb :
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
include Devise::Controllers::Rememberable
def facebook
end
def vkontakte
@user = User.find_for_vkontakte_oauth request.env["omniauth.auth"]
if @user.persisted?
remember_me(@user)
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Vkontakte"
sign_in_and_redirect @user, :event => :authentication
else
flash[:notice] = "authentication error"
redirect_to root_path
end
end
def passthru
super
end
end
routes.rb :
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
собственно сама ссылка залогиниться через вконтакте:
<%- if devise_mapping.omniauthable? %>
<%- resource_class.omniauth_providers.each do |provider| %>
<%= link_to "Sign in with #{provider.to_s.titleize}", user_omniauth_authorize_path(resource_name, provider:provider) %><br />
<% end -%>
<% end -%>
ruby '2.1.4'
rails '4.1.6'