Я успешно автоматизировал процесс перемещения данных из Google Big Query в Google Storage. Теперь мне нужно также автоматически загружать данные из Google Storage в мою среду.
Я пытаюсь выполнить обычный HTTP-запрос, но ранее разрешаю. Таким образом, мой HTTP-запрос
HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory(authorize());
GenericUrl url = new GenericUrl(uri);
HttpRequest request = requestFactory.buildGetRequest(url);
HttpResponse response = request.execute();
String content = response.parseAsString();
И мой код авторизации
/** Authorizes the installed application to access user protected data. */
private static Credential authorize() throws Exception
{
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
// load client secrets
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
new InputStreamReader(BigQueryConsumer.class.getResourceAsStream("/secret.json")));
// This creates the credentials datastore at ~/.oauth-credentials/${credentialDatastore}
FileDataStoreFactory fileDataStoreFactory = new FileDataStoreFactory(new File(System.getProperty("user.home") + "/" + CREDENTIALS_DIRECTORY));
// set up authorization code flow
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, JSON_FACTORY, clientSecrets,
SCOPES).setDataStoreFactory(fileDataStoreFactory)
.build();
// authorize
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
}
Где следующие константы
- CREDENTIALS_DIRECTORY: ".oauth-credentials"
- JSON_FACTORY: JacksonFactory.getDefaultInstance()
- SCOPES: список строк, имеющих только "https://www.googleapis.com/auth/devstorage.full_control"
- HTTP_TRANSPORT: новый NetHttpTransport()
Что мне не хватает во время процесса аутентификации/авторизации? Я получаю
Exception in thread "main" com.google.api.client.http.HttpResponseException: 401 Unauthorized
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>