这里是代码。
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
由于服务帐户不属于您的域,因此它们无法创建conferenceSolution
为hangoutsMeet
的日历。
花了我一点时间来理解这一点,但是根据Events
resource of the Calendar API的文档,会议解决方案的类型如下:
Events
:针对消费者的环聊("eventHangout"
)http://hangouts.google.com:对于经典环聊对于G Suite用户(
"eventNamedHangout"
)[http://hangouts.google.com:用于环聊聚会(
"hangoutsMeet"
)http://meet.google.com:用于3P会议提供者
并且来自"addOn"
:
服务帐户是您的G Suite域的不是成员,与用户帐户不同。例如,如果您与G Suite域中的所有成员共享资产,则不会与服务帐户共享资产。同样,由服务帐户创建的任何资产都不能由G Suite管理员拥有或管理。
您正在经历的结果是:服务帐户不属于您的域,因此无法创建具有会议Google Cloud Service Account documentation值的日历针对其自身解决方案类型。
[如果希望日历具有此会议解决方案类型,则必须创建日历,使其由您的G Suite域成员拥有;也就是说,让服务帐户创建一个模拟为G Suite域成员的日历。
之所以从hangoutsMeet
的Try this API
功能中获得正确结果,是因为该API调用已获得您的授权-G Suite域用户。
希望对您有帮助!
Calendars: insert
Calendars: insert
| Google Calendar API | Google DevelopersCalendars: insert