使用Facebook / Google API进行本地开发

时间:2012-01-11 12:09:18

标签: ruby-on-rails facebook authentication omniauth

我正在努力将omniauth实现到Rails项目中。我的问题是身份验证提供程序--Twitter,Google,Facebook等都要求我创建一个带有URL的应用程序,该URL限制来自URL之外的任何地方的身份验证请求。我需要能够在本地测试,但也可以在生产中运行代码,但Facebook例如不允许2个域,并且无论如何都不允许localhost。

那么我的选择是什么?

4 个答案:

答案 0 :(得分:3)

在工作中,我们为不同的环境设置了多个应用程序。在本地,在/etc/hosts中添加一个条目(假设您使用的是Linux)eg: 127.0.0.1 mydomain.local

在本地环境的Facebook应用设置中,将其添加为网址。大多数事情,除了facebook需要刮你的网站(如按钮)工作。

答案 1 :(得分:3)

以下是我的解决方案的博文:http://make.bettermistak.es/2012/05/03/how-to-create-a-local-sandbox-facebook-app/

以下是相关位:“Facebook验证您的应用的所有请求都来自正确的域 - 他们不允许来自localhost或127.0.0.1的请求 - 并且此信息可以在托管URL下的应用设置中更新。将“local.herokuapp.com”添加到您的主机URL并保存此设置。然后编辑您的/ etc / hosts文件,以便本地内容位于域local.herokuapp.com下。此文件是隐藏的,因此从命令行输入sudo vi / etc / hosts。(用你最喜欢的编辑器代替vi。)我们需要使用sudo,因为这个文件是锁定的。在“127.0.0.1 localhost”下添加“127.0.0.1 local.herokuapp.com”行保存并退出文本编辑器。“

答案 2 :(得分:1)

据我所知,你必须为你的应用程序唱两个应用程序。(一个用于远程端,一个用于本地端)

幸运的是,有一种方法可以减少复杂性(假设您正在使用Linux):

您可以配置 .bash_profile (分别为本地计算机和远程计算机):

export YOURAPP_APP_ID="XXXXX"                                         
export YOURAPP_APP_SECRET="XXXXX"

在代码中使用 ENV [' YOURAPP_APP_ID'] ENV [' YOURAPP_APP_SECRET'] 。 例如,您可以在rails中编写这样的代码:

config.omniauth :facebook, ENV['YOURAPP_APP_ID'], ENV['YOURAPP_APP_SECRET']

通过这种方式,您可以在本地和远程端使用相同的代码。这将更容易维护。

如果您使用Heroku来托管您的应用程序,可以参考this page来配置环境变量。

答案 3 :(得分:0)

我在Facebook上创建了两个应用程序,其中一个我以沙盒模式运行以进行开发。这会是你的选择吗?