我正在使用 the bigQuery gem在我的项目中。我使用选项 client_id、service_email、key、project_id 和数据集对其进行初始化。我有来自 Google 的 .p12 文件,我想传入但我不确定将该文件放在我的 Rails 项目中的什么位置 - 我尝试将它放在与我的配置文件相同的目录中并传递相对路径名,但是我收到无效密码错误。具体来说,line 10调用 load_key 时抛出错误:
key = Google::APIClient::PKCS12.load_key(
opts['key'],
"notasecret"
)
很明显它没有正确加载 key 文件。我在 Rails Assets 控制方面很糟糕 - 我应该把我的 key 文件放在哪里,我应该在我的选项哈希中传递什么路径名?
最佳答案
您可以将 key 文件放入配置目录,然后执行以下操作:
opts['key'] = Rails.root.join('config','nameofkeyfile.p12').to_s
您不希望 key 位于您的应用程序将向公众提供服务的位置,因此配置对我来说听起来是个不错的位置。
您可以在 Rails 控制台中试验上面的代码块:
# run `rails c` then
keypath = Rails.root.join('config','nameofkeyfile.p12').to_s
key = Google::APIClient::PKCS12.load_key(keypath, "notasecret")
查看 Google::APIClient documentation ,我看到 load_key
已弃用。他们建议改用 Google::APIClient::KeyUtils
。
key = Google::APIClient::KeyUtils.load_from_pkcs12(keyfile, "notasecret")
关于 Rails Assets 管道的快速概览,请参阅 here . (请原谅该 url 的“for dummies”部分,它似乎是很好的快速信息。)
关于ruby-on-rails - 如何在 Rails 项目中将 key 文件作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849728/