Я работаю над приложением Java, которое использует библиотеку Google Auth для аутентификации с помощью API Календаря Google. Я скачал файл Credentials.json для своих учетных данных OAuth2 из Google Cloud Console и загружаю этот файл в свое приложение следующим образом:
InputStream in = GoogleCalendarExample.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
GoogleCredentials credentials = GoogleCredentials.fromStream(in).createScoped(SCOPES);
Однако, когда я пытаюсь запустить приложение, я получаю следующую ошибку:
Exception in thread "main" java.io.IOException: Error reading credentials from stream, 'type' field not specified.
at com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:170)
at com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:143)
at pl.szylak.googleservices.GoogleCalendarExample.main(GoogleCalendarExample.java:32)
Я проверил свой файл учетных данных.json, и он не содержит поля типа. Вместо этого он включает установленный объект с client_id, client_secret и другими сведениями:
{
"installed": {
"client_id": "CLIENT_ID.apps.googleusercontent.com",
"project_id": "PROJECT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "CLIENT_SECRET",
"redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]
}
}
Я читал, что библиотека Google Auth должна без проблем обрабатывать этот тип файла учетных данных, поэтому я не уверен, почему я вижу эту ошибку. Кто-нибудь еще сталкивался с этой проблемой и знает, как ее решить?
Я изменил значения в Credentials.json для заполнителей.
Это мой простой Java-код для добавления событий в календарь.
package pl.szylak.googleservices;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.CalendarScopes;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.util.Collections;
public class GoogleCalendarExample {
private static final String APPLICATION_NAME = "Google Calendar API Java Quickstart";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static final String CREDENTIALS_FILE_PATH = "/resources/credentials.json";
private static final java.util.List\ SCOPES = Collections.singletonList(CalendarScopes.CALENDAR);
private static com.google.api.services.calendar.Calendar service;
public static void main(String... args) throws IOException, GeneralSecurityException {
// Build a new authorized API client service.
final com.google.api.client.http.javanet.NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
InputStream in = GoogleCalendarExample.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
GoogleCredentials credentials = GoogleCredentials.fromStream(in).createScoped(SCOPES);
service = new com.google.api.services.calendar.Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpCredentialsAdapter(credentials))
.setApplicationName(APPLICATION_NAME)
.build();
// Call the Google Calendar API and add an event.
addEvent();
}
private static void addEvent() throws IOException {
Event event = new Event()
.setSummary("Google I/O 2025")
.setLocation("800 Howard St., San Francisco, CA 94103")
.setDescription("A chance to learn more about Google's developer products.");
EventDateTime start = new EventDateTime()
.setDateTime(new DateTime("2025-05-28T09:00:00-07:00"))
.setTimeZone("America/Los_Angeles");
event.setStart(start);
EventDateTime end = new EventDateTime()
.setDateTime(new DateTime("2025-05-28T17:00:00-07:00"))
.setTimeZone("America/Los_Angeles");
event.setEnd(end);
String calendarId = "primary";
event = service.events().insert(calendarId, event).execute();
System.out.printf("Event created: %s\n", event.getHtmlLink());
}
}
Подробнее здесь: https://stackoverflow.com/questions/766 ... -specified
Ошибка чтения учетных данных из потока, поле «тип» не указано. ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1737646022
Anonymous
Я работаю над приложением Java, которое использует библиотеку Google Auth для аутентификации с помощью API Календаря Google. Я скачал файл Credentials.json для своих учетных данных OAuth2 из Google Cloud Console и загружаю этот файл в свое приложение следующим образом:
InputStream in = GoogleCalendarExample.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
GoogleCredentials credentials = GoogleCredentials.fromStream(in).createScoped(SCOPES);
Однако, когда я пытаюсь запустить приложение, я получаю следующую ошибку:
Exception in thread "main" java.io.IOException: Error reading credentials from stream, 'type' field not specified.
at com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:170)
at com.google.auth.oauth2.GoogleCredentials.fromStream(GoogleCredentials.java:143)
at pl.szylak.googleservices.GoogleCalendarExample.main(GoogleCalendarExample.java:32)
Я проверил свой файл учетных данных.json, и он не содержит поля типа. Вместо этого он включает установленный объект с client_id, client_secret и другими сведениями:
{
"installed": {
"client_id": "CLIENT_ID.apps.googleusercontent.com",
"project_id": "PROJECT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "CLIENT_SECRET",
"redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]
}
}
Я читал, что библиотека Google Auth должна без проблем обрабатывать этот тип файла учетных данных, поэтому я не уверен, почему я вижу эту ошибку. Кто-нибудь еще сталкивался с этой проблемой и знает, как ее решить?
Я изменил значения в Credentials.json для заполнителей.
Это мой простой Java-код для добавления событий в календарь.
package pl.szylak.googleservices;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.CalendarScopes;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.util.Collections;
public class GoogleCalendarExample {
private static final String APPLICATION_NAME = "Google Calendar API Java Quickstart";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static final String CREDENTIALS_FILE_PATH = "/resources/credentials.json";
private static final java.util.List\ SCOPES = Collections.singletonList(CalendarScopes.CALENDAR);
private static com.google.api.services.calendar.Calendar service;
public static void main(String... args) throws IOException, GeneralSecurityException {
// Build a new authorized API client service.
final com.google.api.client.http.javanet.NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
InputStream in = GoogleCalendarExample.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
GoogleCredentials credentials = GoogleCredentials.fromStream(in).createScoped(SCOPES);
service = new com.google.api.services.calendar.Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpCredentialsAdapter(credentials))
.setApplicationName(APPLICATION_NAME)
.build();
// Call the Google Calendar API and add an event.
addEvent();
}
private static void addEvent() throws IOException {
Event event = new Event()
.setSummary("Google I/O 2025")
.setLocation("800 Howard St., San Francisco, CA 94103")
.setDescription("A chance to learn more about Google's developer products.");
EventDateTime start = new EventDateTime()
.setDateTime(new DateTime("2025-05-28T09:00:00-07:00"))
.setTimeZone("America/Los_Angeles");
event.setStart(start);
EventDateTime end = new EventDateTime()
.setDateTime(new DateTime("2025-05-28T17:00:00-07:00"))
.setTimeZone("America/Los_Angeles");
event.setEnd(end);
String calendarId = "primary";
event = service.events().insert(calendarId, event).execute();
System.out.printf("Event created: %s\n", event.getHtmlLink());
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/76697908/error-reading-credentials-from-stream-type-field-not-specified[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия