我正在尝试使用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
时,我看到我使用在项目中授予所有者的凭据登录。为什么我会收到此错误?
答案 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();