2016-08-25 213 views
0

我是BigQuery的入门者。 而我的问题伴随着身份验证。 凭证文件已创建并存储在:BigQuery身份验证问题

/home/ltloi/.config/gcloud/application_default_credentials.json

内容:

{ 
    "type": "service_account", 
    "project_id": "xxx", 
    "private_key_id": "xxx", 
    "private_key": "-----BEGIN PRIVATE KEY-----xxx\n-----END PRIVATE KEY-----\n", 
    "client_email": "xxx", 
    "client_id": "xxx", 
    "auth_uri": "https://accounts.google.com/o/oauth2/auth", 
    "token_uri": "https://accounts.google.com/o/oauth2/token", 
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/bigqueryservices1%40neon-deployment-141106.iam.gserviceaccount.com" 
} 

源代码:

// just authentication with google big query 
public static Bigquery createAuthorizedClient() throws IOException { 
    // Create the credential 
    HttpTransport transport = new NetHttpTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 

    GoogleCredential credential = GoogleCredential.getApplicationDefault(transport, jsonFactory); 

    // Depending on the environment that provides the default credentials (e.g. Compute Engine, App 
    // Engine), the credentials may require us to specify the scopes we need explicitly. 
    // Check for this case, and inject the Bigquery scope if required. 
    if (credential.createScopedRequired()) { 
     credential = credential.createScoped(BigqueryScopes.all()); 
    } 

    return new Bigquery.Builder(transport, jsonFactory, credential) 
     .setApplicationName("Bigquery Samples") 
     .build(); 
    } 

的问题问题:在 异常线程“主要” java.io.IOException异常:错误的位置

阅读证书文件

/home/ltloi/.config/gcloud/application_default_credentials.json

错误:

java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getCredentialUsingWellKnownFile(DefaultCredentialProvider.java:251) at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredentialUnsynchronized(DefaultCredentialProvider.java:117) at com.google.api.client.googleapis.auth.oauth2.DefaultCredentialProvider.getDefaultCredential(DefaultCredentialProvider.java:91) at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.getApplicationDefault(GoogleCredential.java:213) at com.google.cloud.bigquery.samples.GettingStarted.createAuthorizedClient(GettingStarted.java:53) at com.google.cloud.bigquery.samples.GettingStarted.main(GettingStarted.java:135)

当我尝试调试和代码显示带有SSL发行形式的HttpClient。

请专家帮忙解决。我已经尝试添加的 https://accounts.google.com/o/oauth2/auth

https://www.googleapis.com/oauth2/v1/certs

SSL却不能解析。

我也安装Cloud SDK,但也无法解决。

{ 
    "client_id": "XXXX", 
    "client_secret": "XXX", 
    "refresh_token": "XXXX", 
    "type": "authorized_user" 
} 

注:我已经做了gcloud公测身份验证的应用程序的默认登录gcloud公测身份验证应用程序默认的打印访问令牌

感谢&问候,

回答

0

被应用默认使用以下命令创建凭证?

gcloud beta auth application-default login 

我想还有两个额外的快速测试,你可以做更接近的问题来源。首先,你可以试试这个,以验证您的凭据都很好:

gcloud beta auth application-default print-access-token 

然后,你可以复制并粘贴此简短的Python脚本,以验证它的工作原理(从这里开始:https://cloud.google.com/bigquery/authentication

# Grab the application's default credentials from the environment. 
credentials = GoogleCredentials.get_application_default() 
# Construct the service object for interacting with the BigQuery API. 
bigquery_service = build('bigquery', 'v2', credentials=credentials) 
+0

喜,gcloud beta auth application-default login&gcloud beta auth application-default print-access-token work is correct。 –

+0

同样的问题,当我尝试:https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven –