Невозможно создать HangoutsMeet с API календаря, используя Java - PullRequest
0 голосов
/ 06 апреля 2020

вот код.

private static Credential authorize() throws Exception {
    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
    InputStream in = ModuloCalendar.class.getResourceAsStream("quickstart-1585944958709-f0acf97c5fa8.json");  

    Collection<String> scopes  = CalendarScopes.all();

    GoogleCredential credential = GoogleCredential.fromStream(in).createScopes(scopes);
    return credential;
}
Calendar entry = new Calendar();
entry.setSummary(descripcion);

ConferenceProperties conferenceProperties=new ConferenceProperties();

List<String> allowedConferenceSolutionTypes = new ArrayList<String>();

allowedConferenceSolutionTypes.add("hangoutsMeet");

conferenceProperties.setAllowedConferenceSolutionTypes(allowedConferenceSolutionTypes);

entry.setConferenceProperties(conferenceProperties);
View.display(entry);

Calendar result = client.calendars().insert(entry).execute();
View.display(result);

Я сделал шаги на https://developers.google.com/identity/protocols/oauth2/service-account

, он создает календарь, но всегда возвращает "allowedConferenceSolutionTypes":["eventHangout"]

Не hangoutsMeet

1 Ответ

0 голосов
/ 08 апреля 2020

Ответ:

Поскольку учетные записи служб не являются частью вашего домена, они не могут создавать собственные календари с conferenceSolution из hangoutsMeet.

* 1008. * Дополнительная информация:

Мне потребовалось немного времени, чтобы понять это, но в соответствии с документацией для ресурса Events API Календаря типы решений конференции следующие:

И от Документация учетной записи службы Google Cloud :

Сервисные учетные записи являются , а не членами вашего домена G Suite, в отличие от учетных записей пользователей. Например, если вы предоставите общий доступ к ресурсам всем членам вашего домена G Suite, они не будут переданы учетным записям служб. Точно так же любые активы, созданные учетной записью службы, не могут принадлежать или управляться администраторами G Suite.

Результатом этого является то, что учетная запись службы не является частью вашего домена, и поэтому не может создать календарь для себя , который имеет значение hangoutsMeet для типа решения конференции.

Если вы хотите, чтобы sh Календарь имел этот тип решения конференции, вы должны создать календарь так, чтобы он принадлежал члену вашего домена G Suite; то есть, попросите служебную учетную запись создать календарь, выдавая себя за члена домена G Suite.

Причина, по которой вы получаете правильный результат с помощью функции Try this API Calendars: insert объясняется тем, что вызов API авторизуется как пользователь домена G Suite.

Создание учетных данных учетной записи службы:

При выполнении аутентификации необходимо настроить пользователя. что вы будете sh олицетворять перед сборкой:

GoogleCredential.Builder b = new GoogleCredential.Builder()
 .setTransport(httpTransport)
 .setJsonFactory(jacksonFactory)
 .setServiceAccountId(serviceAccountId)
 .setServiceAccountPrivateKey(yourPrivateKey)
 .setServiceAccountScopes(scopes)
 //the user whom you want to impersonate here:
 .setServiceAccountUser(email-to-impersonate);

credential = b.build();

return credential;

Или с файлом pk12:

GoogleCredential.Builder b = new GoogleCredential.Builder()
 .setTransport(httpTransport)
 .setJsonFactory(jsonFactory)
 .setServiceAccountId(serviceAccountId)
 .setServiceAccountPrivateKeyFromP12File(pk12)
 .setServiceAccountScopes(scopes)
 //the user whom you want to impersonate here:
 .setServiceAccountUser(email-to-impersonate);

credential = b.build();

return credential;

Я надеюсь, что это полезно для вас!

Ссылки:

...