Ошибка при попытке пройти аутентификацию через Facebook с помощью omniauth

Я следил за Ryan Bates Omniauth Part1 railscats http://railscasts.com/episodes/235-omniauth-part-1 . Я использую аутентификацию Twitter и Facebook с их секретными номерами, и когда я пытаюсь пройти аутентификацию через Facebook (auth/facebook), я получаю эту ошибку:

{
   "error": {
      "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.",
      "type": "OAuthException"
   }
}

И когда я пытаюсь пройти аутентификацию через твиттер (auth/twitter), я получаю ответ 401 Unauthorized. Я не знаю, как я могу это исправить

Спасибо, я исправил ввод http://127.0.0.1:3000 в поле обратного вызова URL-адреса в твиттере и в поле моего веб-сайта в фейсбуке. Но теперь, когда я пытаюсь пройти аутентификацию с помощью Facebook, я получаю эту ошибку:

OpenSSL::SSL::SSLError

SSL_connect return=1 errno=0 state=SSLv3 чтение сертификата сервера B: проверка сертификата не удалась

Как я могу это решить? Я решил поместить OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE в development.rb


person TomasMax    schedule 13.11.2011    source источник


Ответы (2)


Эта ошибка появляется, когда ваш сервер работает по протоколу http. Вам нужно добавить этот фрагмент кода в your_project/script/rails перед APP_PATH

require 'rubygems'
require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'

module Rails
    class Server < ::Rack::Server
        def default_options
            super.merge({
                :Port => 3000,
                :environment => (ENV['RAILS_ENV'] || "development").dup,
                :daemonize => false,
                :debugger => false,
                :pid => File.expand_path("tmp/pids/server.pid"),
                :config => File.expand_path("config.ru"),
                :SSLEnable => true,
                :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
                :SSLPrivateKey => OpenSSL::PKey::RSA.new(
                       File.open("/path_to_your/privatekey.pem").read),
                :SSLCertificate => OpenSSL::X509::Certificate.new(
                       File.open("/path_to_your/servercert.crt").read),
                :SSLCertName => [["CN", WEBrick::Utils::getservername]]
            })
        end
    end
end

Чтобы сгенерировать самозаверяющие сертификаты, прочтите это руководство http://www.akadia.com/services/ssh_test_certificate.html (шаги 1–4) или этот www.tc.umn.edu /~brams006/selfsign.html

После обновления скрипта rails измените URL-адрес с http://127.0.0.1:3000 на https://127.0.0.1:3000.

person liviu.r2    schedule 14.11.2011
comment
Большое Вам спасибо!! Я исправил это, поместив OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE в development.rb в development.rb, но я думаю, что лучше создать безопасное соединение ssl. - person TomasMax; 14.11.2011

Я довольно часто сталкиваюсь с этой проблемой, когда Twitter находится в разработке.

Вероятно, проблема связана с вашим URL-адресом обратного вызова в настройках вашего приложения. Попробуйте установить его на:

http://127.0.0.1

И попробуй еще раз. Если не работает с http://localhost:3000, попробуйте с http://127.0.0.1:3000

Проблема с Facebook также, вероятно, заключается в URL-адресе обратного вызова в настройках приложения. Для Facebook моя настройка site url: http://localhost:3000/

person Gazler    schedule 13.11.2011
comment
Спасибо, с твиттером исправляю, а с фейсбуком нет. В параметрах приложения FAcebbok, где я должен указать localhost:3000 ?? - person TomasMax; 13.11.2011
comment
В прошлом у меня также были проблемы с использованием Webbrick. Я не уверен, что это ответ здесь, просто покупатель остерегается. Я переключился на тонкий, gem 'thin' в Gemfile, затем на rails -s thin. - person Jeff Ancel; 13.11.2011