I use Ruby on Rails, gem omniauth-vkontakte. when trying to authenticate, the VK displays {"error":"invalid_client","error_description":"client_id is incorrect"} , in the heroku logs: NoMethodError (undefined method 'provider' for nil:NilClass): app/models/user.rb:5:in 'from_omniauth' app/controllers/sessions_controller.rb:3:in 'create'
app_id and app_secret are correct, checked several times: (
config/initializers/omniauth.rb :
Rails.application.config.middleware.use Omniauth::Builder do provider :vkontakte, ENV['app_id'], ENV['app_secret'], scope: 'public_profile', display: 'page', image-size: 'square' end models/user.rb :
class User < ActiveRecord::Base has_many :messages, dependent: :delete_all class << self def from_omniauth(auth) provider = auth.provider uid = auth.uid info = auth.info.symbolize.keys! user = User.find_or_initialize_by(uid: uid, provider: provider) user.name = info.name user.avatar_url = info.image user.profile_url = info.urls.send(provider.capitalize.to_sym) user.save! user end end end controllers/sessions_controller.rb :
def create user = User.from_omniauth(request.env['omniauth_auth']) cookies[:user_id] = user.id redirect_to root_path end