当我尝试使用omniauth通过Facebook进行身份验证时出错

时间:2011-11-13 13:23:20

标签: ruby-on-rails ruby ruby-on-rails-3 omniauth facebook-oauth

我跟随了Ryan Bates Omniauth Part1 railscats http://railscasts.com/episodes/235-omniauth-part-1。我使用他们的秘密号码进行推特和Facebook认证,当我尝试通过Facebook(auth / facebook)进行身份验证时,我收到此错误:

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

当我尝试通过twitter(auth / twitter)进行身份验证时,我得到了这个401 Unauthorized响应。我不知道如何纠正它

谢谢我更正了在Twitter网址回拨字段和facebook我的网站字段中输入http://127.0.0.1:3000。但是现在当我尝试通过facebook进行身份验证时,我收到了这个错误:

  

的OpenSSL :: SSL :: SSLError

     

SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:   证书验证失败

我该如何解决?我解决了将OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE放入development.rb

的问题

2 个答案:

答案 0 :(得分:1)

我在开发过程中经常会遇到这个问题。

问题可能是您的应用设置中的回调网址。尝试将其设置为:

http://127.0.0.1

再试一次。如果它不起作用http://localhost:3000,请从http://127.0.0.1:3000

尝试

Facebook的问题也可能是应用设置中的回调网址。对于Facebook,我的site url设置为:http://localhost:3000/

答案 1 :(得分:1)

当您的服务器在http协议上运行时,会出现该错误。您需要在APP_PATH

之前在your_project / script / rails中添加这段代码
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脚本后,将网址从http://127.0.0.1:3000更改为https://127.0.0.1:3000