1

我在我的项目中使用bigQuery gem。我使用选项 client_id、service_email、key、project_id 和 dataset 对其进行初始化。我有我想要传递的来自 Google 的 .p12 文件,但我不确定将文件放在我的 Rails 项目中的哪个位置 - 我尝试将它放在与我的配置文件相同的目录中并传递相对路径名,但是我收到无效的密码错误。具体来说,第 10行在调用 load_key 时会引发错误:

key = Google::APIClient::PKCS12.load_key(
  opts['key'],
  "notasecret"
)

很明显,它没有正确加载密钥文件。我在 Rails 资产控制方面很糟糕——我应该把我的密钥文件放在哪里,我应该在我的选项哈希中传递什么路径名?

4

1 回答 1

4

您可以将密钥文件放入配置目录,然后执行以下操作:

opts['key'] = Rails.root.join('config','nameofkeyfile.p12').to_s

您不希望密钥位于您的应用程序将提供给公众的位置,因此 config 对我来说听起来是个不错的位置。

您可以在 Rails 控制台中试验上面的块:

# run `rails c` then
keypath = Rails.root.join('config','nameofkeyfile.p12').to_s
key = Google::APIClient::PKCS12.load_key(keypath, "notasecret")

查看Google::APIClient 文档,我看到load_key已弃用。他们建议Google::APIClient::KeyUtils改用。

key = Google::APIClient::KeyUtils.load_from_pkcs12(keyfile, "notasecret")

关于 Rails 资产管道的快速概览,请参见此处。(请原谅该网址的“傻瓜”部分,这似乎是好的,快速的信息。)

于 2013-11-08T01:16:15.713 回答