【问题标题】:Google Earth Engine REST API Authentication from Ruby fails来自 Ruby 的 Google Earth Engine REST API 身份验证失败
【发布时间】:2020-11-02 08:33:44
【问题描述】:

我正在尝试使用服务帐户向https://earthengine.googleapis.com/v1alpha/projects/{my-project}:listAssets?key={serviceKey} 发出 API 请求, 但我总是得到未经授权的 401。

 url = "https://earthengine.googleapis.com/v1alpha/projects/{project-id}:listAssets?key=ServiceAccountKey"
endpoint = URI.parse(url)
request = Net::HTTP::Get.new(endpoint.to_s)

response = Net::HTTP.start(endpoint.host, endpoint.port, use_ssl: true) { |http| http.request(request) }
JSON.parse(response.body)

【问题讨论】:

  • 尝试详细说明。解释你做了什么。然后显示一些代码以及你在哪里得到了哪个错误。

标签: ruby-on-rails google-contacts-api google-earth-engine


【解决方案1】:

我过去也遇到过同样的问题。 您需要先被 Google EarthEngine 团队接受/注册才能访问 API。

注册地球引擎。一旦您被接受,您将收到一封包含更多信息的电子邮件。

要注册,请按照 Google 官方文档 here 中的说明进行操作。

我用了 1 天就可以顺利调用 API。

编辑:您收到的 HTTP 401 响应表明身份验证凭据无效。就我而言,该应用程序使用服务帐户进行连接。我遵循了here 的说明,我的应用程序可以顺利连接到地球引擎。希望对你有帮助

【讨论】:

  • 我已经注册了 Google 地球引擎。我正在从我的应用程序执行 REST API 调用,我尝试发送密钥(服务密钥),我得到 401。我尝试传递 client_id,我也得到相同的响应 401。
  • 刚刚在我的回答中添加了更多详细信息以及我进入的方式。希望对您有所帮助
  • 感谢您的回复...我创建了一个服务帐户。但是,我不能使用 ee.ServiceAccountCredentials,因为我正在使用 Ruby on rails 执行此操作。
  • 在你的情况下,我会创建一个云函数(GCP 或 AWS lambda)来处理 Node.js(或 Python)中的所有 Earth Engine API,我会让 Ruby on Rails 端简单地制作对您的云函数的 HTTP 调用。因此,您的中间 EE 自定义 API 从面向用户的应用程序中抽象出来,处理凭据和自定义 EE 相关逻辑。
  • 我能够正确验证请求并获得响应。我必须使用gem 'omniauth-google-oauth2' gem 在omniauth 初始化文件中设置帐户凭据,并设置范围还必须包括here 中提到的API 范围。但是,我会尝试您提到的方法,因为在进行 REST API 调用时我无权访问(ee 变量)。
猜你喜欢
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
相关资源
最近更新 更多