Bigquery:如何在BigQueryJavaAPI中访问另一个项目?

Bigquery:如何在BigQueryJavaAPI中访问另一个项目?,java,google-bigquery,Java,Google Bigquery,下面是我们用来获取bigquery客户端的工作代码示例。我们希望对其进行调整,以便能够跨不同的项目进行查询。例如,在project1上运行查询,但将结果保存到project2的表中。我所做的是获得project2的身份验证,但在查询中为project1中的表提供完整的路径引用,但在写入Bigquery时,作业失败时,它不起作用。拒绝访问:拒绝访问(作业id:job_QueryTable_c43f8d51-01a5-492c-b648-e15171bb65db_266866506361660)。我

下面是我们用来获取bigquery客户端的工作代码示例。我们希望对其进行调整,以便能够跨不同的项目进行查询。例如,在project1上运行查询,但将结果保存到project2的表中。我所做的是获得project2的身份验证,但在查询中为project1中的表提供完整的路径引用,但在写入Bigquery时,作业失败时,它不起作用。拒绝访问:拒绝访问(作业id:job_QueryTable_c43f8d51-01a5-492c-b648-e15171bb65db_266866506361660)。我该怎么办

private void getBigQuery() {
    if (mBigquery == null) {
        HttpTransport transport = new NetHttpTransport();
        List<String> lScope = new ArrayList<String>();
        lScope.add(ConfigConstants.SCOPE);
        GoogleCredential credential;
        try {
            credential = new GoogleCredential.Builder()
                    .setTransport(transport)
                    .setJsonFactory(ConfigConstants.JSON_FACTORY)
                    .setServiceAccountId(ConfigConstants.SERVICE_CLIENT_ID)
                    .setServiceAccountScopes(lScope)                
                    .setServiceAccountPrivateKeyFromP12File(new File(ConfigConstants.KEY_FILE)).build();
            mBigquery = new Bigquery.Builder(transport,
                    ConfigConstants.JSON_FACTORY, credential)
                    .setApplicationName("BigQuery-Service-Accounts/0.1")
                    .setHttpRequestInitializer(credential).build();
        } catch (GeneralSecurityException e) {
            //TODO e.printStackTrace();
        } catch (IOException e) {
            //TODO e.printStackTrace();
        }

    }
}
我想出来了: 转到Google开发者控制台-->项目1的权限-->添加成员-->使用帐户的客户端电子邮件id添加项目2的服务帐户。然后,它就可以工作了

Table table = mBigquery.tables().get(project2,dataset,tableId).execute();//mBigquery is with credential for project1 and get table is for project2