Напишите задание Cron на Java в GAE для запуска BigQuery

Я хочу запустить задание cron в GAE, которое внутренне вызывает BigQuery.

В настоящее время я могу запустить BigQuery, но мне нужно войти в систему со своими учетными данными. Но я хотел бы запустить задание cron для BigQuery без входа в систему.

Любая помощь будет высоко ценится.


person Innovation    schedule 06.04.2014    source источник
comment
Вам нужно использовать токен oauth2.0.   -  person Pentium10    schedule 06.04.2014
comment
Как я могу использовать oauth2.0. Поскольку задание cron выполняется GAE, а не каким-либо пользователем. Пожалуйста, предоставьте код в java.   -  person Innovation    schedule 06.04.2014


Ответы (2)


Я знаю, что это не та Java, которую вы ожидаете. Секрет в том, чтобы использовать AppAssertionCredentials. Вот пример питона:

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)
person Yosi Taguri    schedule 06.04.2014
comment
Можете ли вы дать код Java для этого. Я пробовал большинство вещей, но все еще не смог этого сделать. - person Innovation; 07.04.2014
comment
вот документ Java для соответствующей задачи: javadoc.google-oauth-java-client.googlecode.com/hg/1.6.0-beta/ - person Yosi Taguri; 07.04.2014

Я успешно могу реализовать его в java. Перед его выполнением нам нужно сгенерировать идентификатор клиента для учетной записи службы.

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();
person Innovation    schedule 07.04.2014