#oauth-2.0 #google-api #access-token #credentials #google-oauth-java-client
#oauth-2.0 #google-api #токен доступа #учетные данные #google-oauth-java-client
Вопрос:
Я пытаюсь получить токен доступа, чтобы использовать Cloud SQL Admin API для экспорта таблицы в формате CSV в облачное хранилище Google. Я продолжаю получать эту ошибку: Scopes not configured for service account. Scoped should be specified by calling createScoped or passing scopes to constructor.
каждый раз, когда я вызываю credentials.refreshAccessToken();
приведенный ниже код. Может ли кто-нибудь подсказать мне, что я здесь делаю не так
Set<String> oAuthScopes = new HashSet<String>();
oAuthScopes.add(SQLAdminScopes.CLOUD_PLATFORM);
oAuthScopes.add(SQLAdminScopes.SQLSERVICE_ADMIN);
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
credentials.createScoped(oAuthScopes);
AccessToken access_token = credentials.refreshAccessToken();
try {
httppost.addRequestHeader("Content-Type", "application/json");
httppost.addRequestHeader("Authorization", "Bearer " access_token.getTokenValue());
httppost.setRequestEntity(
new StringRequestEntity(
"{"exportContext":"
""fileType": "CSV","
""uri":" EXPORT_BUCKET
""databases": ["" DATABASE_NAME ""],"
""csvExportOptions": "
"{"
""selectQuery":"" SQL_QUERY "" "
"} "
"} "
"}",
"application/json",
"UTF-8"));
httpclient.executeMethod(httppost);
String response = new String(httppost.getResponseBody());
httppost.releaseConnection();
} catch (UnsupportedEncodingException unsupportedEncodingException) {
unsupportedEncodingException.printStackTrace();
}
Ответ №1:
Это исключение, по-видимому, связано с тем фактом, что стратегия авторизации учетных данных приложения по умолчанию для клиентских библиотек сработает, как только вы установите ‘GOOGLE_APPLICATION_CREDENTIALS’
Кроме того, вы можете создать учетные данные с ограниченной областью действия следующим образом:
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault().createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));