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

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

в config.js(ng-токен-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' }

контроллер omniauth

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= Пользователь" для 127.0.0.1 в 2016-03-12 18:34:33 +0500 I, [2016-03-12T18: 34: 33.203521 # 5978] INFO - 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:: Стратегии:: OAuth2:: CallbackError, csrf_detected | CSRF обнаружена Обработка по Devise:: Ошибка OmniauthCallbacksController # как Параметры HTML: { "code" = > "AQARGivLmOzsdLxe....." } Перенаправлено в http://localhost:3000/auth/sign_in Завершено 302 найдено за 10 мс (ActiveRecord: 0.0ms)

Запущен GET "/auth/sign_in" для 127.0.0.1 в 2016-03-12 18:34:36 +0500 Обработка DeviseTokenAuth:: SessionController # new как HTML Завершено 405 Метод не разрешен в 1 мс (Просмотров: 0.2мс | ActiveRecord: 0.0ms)

Ответ 1

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

mount_devise_token_auth_for 'User', at: 'auth',:controllers => { :omniauth_callbacks => 'omniauth' }, via: [:get, :post]

Ответ 2

Я думаю, что я нашел возможное решение. После некоторых исследований это кажется ошибкой в ​​facebook. После отладки приложения и разработки я понял, что у меня такая ошибка: "error": { "message": "Этот IP-адрес не может делать запросы для этого приложения.", "Type": "OAuthException" По этой причине devise перенаправляет на обработку ошибок Чтобы решить эту проблему, я должен добавить свой общедоступный ip на facebook (предварительные настройки, разрешенные ips), чтобы решить проблему. Надеемся на эту помощь.