当前位置: 首页 > 知识库问答 >
问题:

GCloud Auth使用服务号从java应用程序访问BigQuery不工作

顾喜
2023-03-14

我想访问BigQuery以从JAVA应用程序中的表中选择数据。首先,我创建了一个服务号并授予BigQuery Admin权限。服务号的Json作为环境变量传递,我使用的代码如下(从https://cloud.google.com/docs/authentication/production获得)

static void authImplicit() {
  // If you don't specify credentials when constructing the client, the client library will
  // look for credentials via the environment variable GOOGLE_APPLICATION_CREDENTIALS.
  Storage storage = StorageOptions.getDefaultInstance().getService();

  System.out.println("Buckets:");
  Page<Bucket> buckets = storage.list();
  for (Bucket bucket : buckets.iterateAll()) {
    System.out.println(bucket.toString());
  }
}

该方法返回401,并返回以下错误响应:

原因:com.google.应用程序编程接口。客户googleapis。json。GoogleJsonResponseException:401未经授权{“code”:401,“errors”:[{“domain”:“global”,“location”:“Authorization”,“locationType”:“header”,“message”:“Login Required。”,“reason”:“required”}],“message”:“请求缺少所需的身份验证凭据。需要OAuth 2访问令牌、登录cookie或其他有效的身份验证凭据。请参阅https://developers.google.com/identity/sign-in/web/devconsole-project.“,”status“:“未经验证”}

共有1个答案

郑茂材
2023-03-14

从您的描述来看,您似乎没有将json文件放置在环境变量中描述的路径中。这是假设您在属性文件中正确描述了您的项目id,您已经在Google云平台中启用了所需的API。为了更精确地确定这一点,我需要您与我们共享您的文件夹结构和属性文件

我建议您使用CredentialsProvider接口来解决此问题

public interface CredentialsProvider {
  Credentials getCredentials() throws IOException;
}

您可以在此处找到有关此界面的更多信息。

您还可以查看spring团队为spring bigquery制作的快速入门

 类似资料:
  • 从我的控制器中,我使用 但是我不知道如何从服务中访问它(我想我的服务类不应该扩展)。 我是否应该像这样将所需的参数映射到我的服务注册中: 或者类似的东西?如何从服务访问应用程序参数? 这个问题看起来是一样的,但我实际上回答了它(控制器的参数),我说的是从服务访问。

  • 我花了整整一周的时间与Gmail API做斗争,但没有成功。 我的任务: 使用自定义域创建邮箱 使用服务帐户通过Gmail API连接到此邮箱 我所做的: 然而,我总是会遇到一个错误: 我在设置中错过了什么?

  • 你能告诉我Office365 REST API和EWS Java API之间的区别吗? 我为REST API搜索Java库,但没有可用的库。 两个月前,我在ews java api中提出了一个问题,但仍然没有得到他们的任何回应。 您能否建议任何可靠的解决方案来使用office365 API从Java应用程序。 使用我们需要注册我们的应用程序与Azure,我们可以重新Giter是免费的还是付费的。如

  • 我试图建立我的第一个应用程序,从广告词拉竞选数据,但我有一点麻烦。这是我在的地方: 安装了AdWords API NuGet软件包 创建了一个MCC测试帐户和一个AdWords测试帐户 创建了一个AdWords API开发者帐户(在LIVE AdWords帐户上) 在谷歌开发者控制台的我的测试账号中创建了一个项目和一个服务账号 连接我的网络。使用服务帐户OAuth credentials/p12文

  • 我正在尝试使用通过遵循客户端凭据授予流获得的“仅限应用程序”令牌查询Office 365 Discovery Service REST API,但它返回了被拒绝的访问权限。有没有办法做到这一点?

  • 我可以在AppEngine应用程序中使用GAE托管的MongoDB吗? 如果是,如何用appengine实例调试此连接问题? 提前谢了。