身份验证Google Cloud API

时间:2018-07-26 14:50:36

标签: google-cloud-platform google-authentication

我正在尝试使用BigQuery客户端并收到身份验证错误:

        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-bigquery</artifactId>
        <version>v2-rev397-1.23.0</version>
  

com.google.api.client.googleapis.json.GoogleJsonResponseException:401   未经授权

我是该项目的所有者,并且通过gcloud auth login登录到我的帐户,因此路径中没有服务帐户。当我尝试gcloud auth list时,我看到我使用在项目中授予所有者的凭据登录。为什么我会收到此错误?

1 个答案:

答案 0 :(得分:0)

即使您是通过gcloud auth login登录的,也并不意味着您的应用程序将使用这些凭据。您仍然需要使用OAuth 2.0进行身份验证。

如果您希望通过您的用户帐户进行身份验证,则可以尝试生成访问令牌并将其传递给GoogleCredential类(请注意,令牌会过期)。

要为您的用户凭据生成访问令牌,请使用gcloud工具:

gcloud auth application-default print-access-token

将生成的令牌传递给GoogleCredential类:

GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken);

我对google-api-services-bigquery API不太熟悉,但是我认为这是使用凭证的方式:

Bigquery bigquery = Bigquery.builder(HTTP_TRANSPORT, JSON_FACTORY).setHttpRequestInitializer(credential).build();