【问题标题】:Authenticating with service account (email & key) in fog-google在雾谷歌中使用服务帐户(电子邮件和密钥)进行身份验证
【发布时间】:2015-09-10 17:56:46
【问题描述】:

我不断收到Missing required arguments: google_storage_access_key_id, google_storage_secret_access_key。我知道我应该将我的凭证放在“/.fog”文件中,但我不太明白它应该如何在 Rails 应用程序的上下文中工作。有人可以详细说明如何配置吗?我尝试在初始化程序中传递设置(如建议的here),但它们似乎没有在validate_options 方法中得到识别。

config/initializers/fog.rb GoogleStorage = Fog::Storage.new( provider: 'Google', google_project: 'xxxxxxxxxxxxx', google_client_email: 'xxxxxxxxxxxxx-yyyyyyyyyyyyy@developer.gserviceaccount.com', google_key_location: 'private/google-cloud-service-key.p12' )

【问题讨论】:

    标签: ruby-on-rails ruby authentication google-cloud-storage fog


    【解决方案1】:

    事实证明,fog-google gem 目前无法做到这一点。见this Github issue。当 gem 更新以处理此身份验证策略时,我将更新此答案。

    【讨论】:

      【解决方案2】:

      请改用Figaro Gem 来处理您想要在整个应用中安全存储和用户的任何 ENV 变量。

      将 Figaro 添加到您的 Gemfile 和 bundle install:

      gem "figaro"

      费加罗安装很简单:

      $bundle exec figaro install

      这将创建一个注释 config/application.yml 文件并将其添加到 你的.gitignore。将您自己的配置添加到此文件中,您将 完成!

      示例 application.yml 文件

      # config/application.yml
      
      GOOGLE_ID: "ID"
      GOOGLE_KEY: "KEY"
      

      然后 config/initializers/fog.rb

      GoogleStorage = Fog::Storage.new(
        provider: 'Google',
        google_project: 'xxxxxxxxxxxxx',
        google_client_email: 'xxxxxxxxxxxxx-yyyyyyyyyyyyy@developer.gserviceaccount.com',
        google_key_location: Rails.root.join('private','google-cloud-service-key.p12'),
        google_storage_secret_access_key_id: ENV["GOOGLE_ID"],
        google_storage_secret_access_key: ENV["GOOGLE_KEY"]
      )
      

      【讨论】:

      • 重点是我根本不想使用 access_key。我不必在我的 Node 应用程序中; p12/pem + client_email 就足够了。
      猜你喜欢
      • 2017-10-26
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2018-09-03
      相关资源
      最近更新 更多