Используйте POST /sign_in для входа. GET не поддерживается. Omniauth-facebook

У меня есть ng-token-auth для интерфейса и devise_token_auth на серверной части . Теперь я должен реализовать входы omniauth-facebook и omniauth-goole на свой веб-сайт. Тем не менее, я выполнил вход в Facebook со следующими функциями.

в config.js (ng-token-auth)

$scope.handleBtnClick = function() {
  console.log('here its')
  $auth.authenticate('facebook')
    .then(function(resp) {
      // handle success
    })
    .catch(function(resp) {
      // handle errors
    });
};

В этот момент вход в систему происходит успешно, но когда он перенаправляет, он показывает мне следующую ошибку на моей странице браузера

{"errors":["Используйте POST /sign_in для входа. GET не поддерживается."]}

routes.rb

mount_devise_token_auth_for 'User', at: 'auth',:controllers => { :omniauth_callbacks => 'omniauth' }

devise.rb

 config.omniauth :facebook,  'APP_KEY', 'APP_SECRET',{ :scope => 'email' }

Контроллер всесторонней аутентификации

class OmniauthController < Devise::OmniauthCallbacksController
        def facebook
            byebug
            @user = User.from_omniauth(request.env["omniauth.auth"])
            sign_in_and_redirect @user
        end
    end

И вот мои журналы сервера

Начал GET "/omniauth/facebook?auth_origin_url=http%3A%2F%2Flocalhost%3A3000%2F%23%2F&omniauth_window_type=sameWindow&resource_class=User" для 127.0.0.1 в 2016-03-12 18:34:33 +0500 I, [ 2016-03-12T18:34:33.203521 #5978] ИНФОРМАЦИЯ -- omniauth: (facebook) Инициирована фаза запроса.

Начат GET "/omniauth/facebook/callback?code=AQARGivLmOz...." для 127.0.0.1 в 2016-03-12 18:34:34 +0500 I, [2016-03-12T18:34:34.189285 # 5978] INFO -- omniauth: (facebook) Инициирована фаза обратного вызова. I, [2016-03-12T18:34:36.790185 #5978] INFO -- omniauth: (facebook) Инициирована фаза обратного вызова. E, [2016-03-12T18:34:36.790636 #5978] ОШИБКА -- omniauth: (facebook) Ошибка аутентификации! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF обнаружил обработку Devise::OmniauthCallbacksController#failure как HTML-параметры: {"code"=>"AQARGivLmOzsdLxe ..... "} Перенаправлено на http://localhost:3000/auth/sign_in Завершено 302 Найдено за 10 мс (ActiveRecord: 0,0 мс)

Начат GET "/auth/sign_in" для 127.0.0.1 в 2016-03-12 18:34:36 +0500 Обработка DeviseTokenAuth::SessionsController#new as HTML Завершено 405 Метод не разрешен за 1 мс (Просмотры: 0,2 мс | ActiveRecord: 0,0 мс)


person ImranNaqvi    schedule 12.03.2016    source источник
comment
Что делает byebug в вашем коде, не остановит ли это процесс, что приведет к тайм-ауту? Кроме того, у вас есть URL-адрес обратного вызова, определенный в вашем приложении facebook?   -  person Caffeine Coder    schedule 28.09.2016
comment
Взгляните сюда, переместите свои изменения в secrets.yml - stackoverflow.com/questions/36672015/   -  person Caffeine Coder    schedule 28.09.2016


Ответы (2)


Это сработало для меня:

mount_devise_token_auth_for 'User', at: 'auth',:controllers => { :omniauth_callbacks => 'omniauth' }, via: [:get, :post]
person luissimo    schedule 26.09.2016
comment
Я убедился, что получил ту же ошибку без приведенного выше кода в моем файле routes.rb. Возможно, OP не понял, что это было для этого файла. - person Billy Ferguson; 09.06.2017

Я думаю, что нашел возможное решение. После некоторых исследований это оказалось ошибкой facebook. После отладки приложения и разработки я понял, что у меня возникла эта ошибка: «ошибка»: {«сообщение»: «Этот IP-адрес не может отправлять запросы для этого приложения». «Тип»: «OAuthException» Для этого Причина: устройство перенаправляется на обработку ошибок. Чтобы решить эту проблему, мне нужно добавить свой общедоступный IP-адрес на Facebook (дополнительные настройки, разрешенные IP-адреса), чтобы решить проблему. Надеюсь, это поможет

person Diego Gomez    schedule 28.03.2016