Не работает вход Яндекс OAuth?

Rails 4.2.5+Devise 3.5.1
Gemfile:
gem 'omniauth-yandex'
https://rubygems.org/gems/omniauth-yandex/versions...
config/secrets.yml:
development:
  yandex_auth_app_id: xxxx
  yandex_auth_secret: yyyy

initializers/devise.rb:
config.omniauth	:twitter,
  					Rails.application.secrets.twitter_app_id,
  					Rails.application.secrets.twitter_app_secret
  config.omniauth	:facebook,
  					Rails.application.secrets.facebook_app_id,
  					Rails.application.secrets.facebook_app_secret
  config.omniauth	:vkontakte,
  					Rails.application.secrets.vkontakte_app_id,
  					Rails.application.secrets.vkontakte_app_secret
  config.omniauth :yandex,
            Rails.application.secrets.yandex_auth_app_id,
            Rails.application.secrets.yandex_auth_secret

controllers/users/omniauth_callback_controller.rb:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
	include SearchLoadFromSession
	def vkontakte
		provider_login 'ВКонтакте'
	end

	def twitter
		provider_login 'Twitter'
	end

	def facebook
		provider_login 'Facebook'
	end

	def yandex
		provider_login 'Яндекс'
	end

private
	def provider_login kind
		auth = request.env['omniauth.auth']
		@user = User.from_omniauth auth
		if @user.persisted?
			sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
			set_flash_message(:notice, :success, :kind => kind) if is_navigational_format?
		else
			flash[:error] = 'Ошибка авторизации.'
			redirect_to root_path
		end
	end
end

config/routes.rb:
Rails.application.routes.draw do
	devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth_callbacks', 
		:registrations => 'users/registrations', 
		:confirmations => 'users/confirmations',
		:sessions=> 'users/sessions' },
		:path => '',
		:path_names => { :sign_in => 'вход', :sign_out => 'выход', :sign_up => 'регистрация'}

...
end

models/user.rb
class User < ActiveRecord::Base
	devise 	:database_authenticatable, :registerable,
			:recoverable, :trackable, :validatable, :confirmable,
			:omniauthable,
			:omniauth_providers => [:twitter, :facebook, :vkontakte, :yandex]
.......

ВК, Твиттер, Фейсбук работают. Не работает только Яндекс
62ac9622471249b39954c219d39accef.pngc9f2287518db43628a2b4b05ea8d26f1.png96d71358b42b4f14a94d8b57ac984e82.png
После подтверждения доступа пользователем должно происходить следующее (из документации яндекса):
Яндекс.OAuth перенаправляет пользователя на адрес, указанный в поле Callback URL при регистрации приложения. Код подтверждения (или описание ошибки) передается в параметре URL перенаправления.
Приложение получает адрес перенаправления и извлекает код подтверждения.
Приложение отправляет POST-запрос с кодом.
Яндекс.OAuth возвращает токен в теле ответа.

694e5e331f6e48c498a9ffca033cb0e7.pngb81a8c411a954c2194a9fb780c94cf8d.png
  • Вопрос задан
  • 1093 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы