我在哪里放置Google API .json密钥文件?

时间:2017-01-11 20:58:45

标签: ruby-on-rails heroku google-api

我正在尝试将Google Calendar API集成到我的Rails应用中,因此我可以通过自己的应用创建Google日历活动。

Google提供了一个client_secret.json文件。我可以在本地使用它,但现在不知道如何在heroku上实现密钥文件。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:2)

它应该只是一个秘密和密钥(名称和值)。

对于heroku,您可以将它们设置为环境变量。像这样:

heroku config:set GOOGLE_SECRET=8N029N81ASLDKFA823_WO4ANF

(但请使用json文件中提供的信息)

现在。下一步是确保您的应用程序仅以单一方式调用这些密钥。一个选项是使用config / secrets.yml文件。调用secrets文件中的environment变量。然后,您可以在开发中使用dotenv gem,这样您就可以在应用程序的根目录中放置.env文件,放置所有env变量(但不要检入.env文件)

创建一个文件,如果它不存在config/secrets.yml并在其中添加:

 production:
   google_secret: ENV['GOOGLE_SECRET']

 development:
   google_secret: ENV['GOOGLE_SECRET']

(显然,再次确保名称是你选择的名称)

接下来将dotenv添加到您的gem文件并运行bundle

gem 'dotenv-rails', :groups => [:development, :test]

在应用的根目录中创建一个名为.env的新文件。并直接添加您的变量,包括键名和值。

GOOGLE_SECRET=8N029N81ASLDKFA823_WO4ANF

您可以根据需要添加任意数量的env变量。

现在编辑.gitignore文件并将.env文件添加到其中,以确保您不会意外地检入您的私人信息。

最后,在你需要使用环境变量的任何地方,就是从秘密这样调用它:

Rails.application.secrets.google_secret

我知道这似乎有很多步骤,但它会确保您的开发人员与您的prod匹配,而不会在代码中生成大量if Rails.env.development?语句。