2014-04-06 65 views
2

我想在內部調用BigQuery的GAE上運行cron作業。用GAE在Java中編寫Cron作業以運行BigQuery

我目前能夠運行BigQuery,但我需要使用我的憑據登錄。但是我想在沒有任何登錄的情況下運行BigQuery的cron作業。

任何幫助將不勝感激。

+0

您需要使用oauth2.0令牌。 – Pentium10

+0

如何使用oauth2.0.As cron作業由GAE運行,而不是由任何用戶運行。請在java中提供一些代碼。 – Innovation

回答

1

我能夠成功地實現它在java.Before執行它,我們需要生成服務帳戶客戶端ID。

private static final HttpTransport TRANSPORT = new NetHttpTransport(); 
private static final JsonFactory JSON_FACTORY = new JacksonFactory(); 
private static Bigquery bigquery; 




AppIdentityCredential credential = new AppIdentityCredential(Collections.singleton(BigqueryScopes.BIGQUERY)); 
bigquery = new Bigquery.Builder(TRANSPORT, JSON_FACTORY, credential) 
      .setApplicationName("BigQuery-Service-Accounts/0.1") 
      .setHttpRequestInitializer(credential).build(); 
4

我知道這不是你期待的java。祕訣是使用AppAssertionCredentials。 這裏是Python示例:

from apiclient.discovery import build 
from oauth2client.appengine import AppAssertionCredentials 
import httplib2 
from google.appengine.api import memcache 

scope = 'https://www.googleapis.com/auth/bigquery' 

credentials = AppAssertionCredentials(scope=scope) 

http = credentials.authorize(httplib2.Http(memcache)) 

return build("bigquery", "v2", http=http) 
+0

是否有可能爲此給出java代碼。我嘗試了大部分的東西,但仍然無法完成它。 – Innovation

+0

這裏是相關任務的java文檔:http://javadoc.google-oauth-java-client.googlecode.com/hg/1.6.0-beta/com/google/api/client/extensions/auth/helpers /appengine/AppAssertionCredential.html –