0

我有一个使用 facebook connect 来启用用户注册/登录的 rails 应用程序(使用设计和omniauth)。在阅读了几篇关于 Firesheep 的文章后,我决定为我的整个应用强制使用 ssl 通信。

我按照本教程强制我的 rails 3.0.x 应用程序只能通过 ssl 进行通信:http ://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/

我遵循本教程,以便我可以在 locahost:3001 上使用 webrick 在本地测试应用程序:http: //blog.readypulse.com/2012/01/19/setup-webrick-to-serve-ssl-https-as-以及非 ssl-http-traffic-side-by-side/

到现在为止还挺好。我的应用程序在运行时强制 ssl 通信localhost:3000。尝试与 facebook connect 通信时出现我的问题

如果我将我的 facebook 开发应用程序的网站 url 更改为https://localhost:3001,fb graph 会响应 { "error": { "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.", "type": "OAuthException", "code": 191 } }

但是,如果我将站点 url 更改为http:localhost:3001我的服务器会收到一条错误消息,指出在加载页面时连接已重置。我的浏览器 URL 栏显示它尝试加载的 url 是localhost:3001/auth/facebook/callback?code=MYCODEHERE,如果我只是在该 URL 前面添加“https://”并重新加载,页面将按预期加载。

也许我的问题源于我对 SSL 的非常基本的了解。但是,如果有人可以向我解释如何设置 facebook 开发应用程序以支持我通过 ssl 对 facebook connect 进行本地测试,我将不胜感激?

4

3 回答 3

2

您需要设置一个指向您的本地主机 ( ) 的子域或通过您的文件whatever IN A 127.0.0.1创建所述子域。/etc/hosts

在这两种情况下,您都可以使用http://yoursubdomain.yourdomain/auth/....yourdomainfacebook 应用程序注册的域。

于 2012-07-02T22:14:17.130 回答
2

好的。得到它的工作。这是我所做的,以便我可以在 localhost:3001 上通过 ssl 测试 fb 和 twitter 注册/登录。

首先,我将我的应用程序的 FB 网站网址设置为http://localhost:3001. 然后我修改了omniauth初始化器如下:

if RAILS_ENV == "production"
  full_host = 'https://www.mydomain.com'
  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, 'myfbappid', 'myfbsecret', {:scope => 'email, publish_stream'}
    provider :twitter, 'mytwitterappid', 'mytwittersecret'
  end
  Twitter.configure do |config|
    config.consumer_key = 'myconsumerkey'
    config.consumer_secret = 'myconsumersecret'
    config.oauth_token =    'myoauthtoken'
    config.oauth_token_secret = 'myoauthtokensecret'
  end
elsif RAILS_ENV == "development"
  full_host = 'https://localhost:3001'
  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, 'myfbdevappid', 'myfbdefappsecret', {:scope => 'email, publish_stream'}
    provider :twitter, 'mytwitterdevappid', 'mytwitterdevappsecret'
  end
  Twitter.configure do |config|
    config.consumer_key = 'mytwitterconsumerkey'
    config.consumer_secret = 'mytwitterconsumersecret'
    config.oauth_token =    'mytwitteroauthtoken'
    config.oauth_token_secret = 'mytwitteroathtokensecret'
  end
end
OmniAuth.config.full_host = full_host
于 2012-07-03T05:01:19.713 回答
0

您可以使用https://ngrok.com/获取指向本地主机的安全 url

于 2014-03-14T17:51:36.193 回答