如何使用ssl在本地主机上测试Facebook Connect
我有一个rails应用程序,它使用FacebookConnect启用用户注册/登录(使用Desive和omniauth)。在阅读了几篇关于Firesheep的文章后,我决定强制我的整个应用程序使用ssl通信 我遵循本教程,强制我的rails 3.0.x应用程序仅通过ssl进行通信: 我遵循本教程,以便在locahost:3001上使用webrick在本地测试该应用程序: 到目前为止还不错。我的应用程序在如何使用ssl在本地主机上测试Facebook Connect,facebook,ssl,oauth,omniauth,Facebook,Ssl,Oauth,Omniauth,我有一个rails应用程序,它使用FacebookConnect启用用户注册/登录(使用Desive和omniauth)。在阅读了几篇关于Firesheep的文章后,我决定强制我的整个应用程序使用ssl通信 我遵循本教程,强制我的rails 3.0.x应用程序仅通过ssl进行通信: 我遵循本教程,以便在locahost:3001上使用webrick在本地测试该应用程序: 到目前为止还不错。我的应用程序在localhost:3000上运行时强制ssl通信。我的问题发生在尝试与facebook co
localhost:3000
上运行时强制ssl通信。我的问题发生在尝试与facebook connect通信时
如果我将facebook开发应用程序的网站url更改为https://localhost:3001
,fb图形以
{
“错误”:{
“消息”:“无效重定向\u uri:应用程序配置不允许给定URL。”,
“类型”:“OAutheException”,
“代码”:191
}
}
但是,如果我将站点url更改为http:localhost:3001
,我会从服务器收到一个错误,说在加载页面时连接被重置。我的浏览器URL栏显示它试图加载的URL是localhost:3001/auth/facebook/callback?code=MYCODEHERE
,如果我只是在该URL前面添加“https://”,然后重新加载,页面将按预期加载
也许我的问题源于我对SSL的基本知识。但是如果有人能向我解释如何设置一个facebook开发应用程序来支持我对facebook connect over ssl的本地测试,我将不胜感激。您需要设置一个子域,指向您的本地主机(
127.0.0.1中的任何内容),或者通过/etc/hosts
文件创建所述子域
在这两种情况下,您都可以使用http://yoursubdomain.yourdomain/auth/....
,其中yourdomain
是为facebook应用程序注册的域。您需要设置一个子域,指向您的本地主机(127.0.0.1中的任何内容),或者通过/etc/hosts
文件创建所述子域
在这两种情况下,您都可以使用http://yoursubdomain.yourdomain/auth/....
,其中yourdomain
是为facebook应用程序注册的域。确定。让它工作起来。下面是我所做的,以便我可以在localhost:3001上通过ssl测试fb和twitter注册/登录
首先,我将我的应用程序的FB站点url设置为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
嗯。让它工作起来。下面是我所做的,以便我可以在localhost:3001上通过ssl测试fb和twitter注册/登录
首先,我将我的应用程序的FB站点url设置为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
您可以使用来获取指向本地主机的安全url您可以使用来获取指向本地主机的安全url我不确定是否得到了这个。我不使用任何子域。我只是希望FB graph使用https回调。Facebook只允许返回与您为应用程序注册的域相匹配的URL。因此,您需要为其提供一个url,该url可以是您在应用程序设置中输入的域,也可以是它的子域。由于您使用的是localhost,因此需要一个DNS/hosts条目来为您提供这样的子域,而不是localhost
.Ahh。我明白你的意思。然而,我走了另一条路(我应该在我的第一篇文章中提到)。我有一个用于开发的FB应用程序(目前有一个url),还有一个单独的用于生产的FB应用程序(指向www.myapp.com)。我的问题是我无法让FB开发应用程序回拨到https://localhost:3001
。它只想回拨http://localhost:3001
。啊,尝试将站点url设置为localhost
。如果这不起作用,或者完全忽略了端口,您可能必须切换到端口443。感到沮丧,但我感谢您的帮助,ThiefMaster。FB不让我使用你的第一个建议,说我必须预先挂起“http”或“https”。第二个建议导致了相同的FB图形错误,{“error”:{“message”:“无效重定向”\u uri:应用程序配置不允许给定URL。”,“type”:“OAuthException”,“code”:191}
。如果我使用https://locahost
。我不确定我是否明白。我不使用任何子域。我只是希望FB graph使用https回调。Facebook只允许返回与您为应用程序注册的域相匹配的URL。因此,您需要为其提供一个url,该url可以是您在应用程序设置中输入的域,也可以是它的子域。由于您使用的是localhost,因此需要一个DNS/hosts条目来为您提供这样的子域,而不是localhost
.Ahh。我明白你的意思。然而,我走了另一条路(我应该在我的第一篇文章中提到)。我有一个用于开发的FB应用程序(目前有一个url),还有一个单独的用于生产的FB应用程序(指向www.myapp.com)。我的问题是我无法让FB开发应用程序回拨到https://localhost:3001
。它只想回拨http://localhost:3001
。啊,尝试将站点url设置为localhost
。如果这不起作用,或者完全忽略了端口,您可能必须切换到端口443。感到沮丧,但我感谢您的帮助,ThiefMaster。FB不让我使用你的第一个建议,说我必须预先挂起“http”或“https”。第二个建议导致了相同的FB图形错误,{“error”:{“message”:“无效重定向”\u uri:应用程序配置不允许给定URL。”,“type”:“OAuthException”,“code”:191}
。如果我使用https://locahost
。我需要使用Rails.env==“development”
而不是Rails\u env==“development”
。我需要使用Rails.env==”