#reactjs #google-calendar-api #google-api-js-client
Вопрос:
Я интегрировал небольшую функцию, которая считывает события календаря с каждого участника календаря Google моей организации. Это работает для большинства, но пара получает возврат 403.
Я думаю, это потому, что у них есть несколько учетных записей Google, подключенных к календарю, возможно, и у меня нет разрешения на чтение этих других учетных записей. Это единственная причина, о которой я могу думать. Надеюсь, кто — нибудь сможет здесь помочь-действительно застрял в поисках решения.
Я НЕ использую области только для чтения. Ниже приведена функция react, которая загружает события календаря для пользователя.
const loadCalendar = () => {
window.gapi.load('client:auth2', () => {
console.log("fetching calendar for: ", userEmail);
gapi.client.init({
apiKey: "xyz",
clientId: "xyz",
discoveryDocs: ["https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest"],
scope: "https://www.googleapis.com/auth/calendar",
})
gapi.client.load('calendar', 'v3', () => {
gapi.auth2.getAuthInstance().then(() => {
gapi.client.calendar.events.list({
'calendarId': 'primary',
'timeMin': (new Date()).toISOString(),
'showDeleted': false,
'singleEvents': true,
'maxResults': 12,
'orderBy': 'startTime',
}).then(({ result }) => {
let filteredArr = [];
result.items.forEach(item => {
let obj = {
key: item.id,
attendees: item.attendees,
start: item.start["date"] ? item.start["date"] : new Date(item.start["dateTime"]).toLocaleString(),
summary: item.summary,
zoomLink: item.location
}
filteredArr.push(obj);
})
setCalendarEvents(filteredArr)
})
})
})
});
}
Комментарии:
1. Привет, @Tony! Чтобы лучше проанализировать вашу ситуацию, пожалуйста, поделитесь соответствующим кодом. Не стесняйтесь скрывать любую личную информацию об этом. Также, пожалуйста, уточните, используете ли вы делегирование всего домена.
2. @Jacques-GuzelHeron Большое спасибо, что посмотрели. Это действительно ставит меня в тупик. Добавлен код в правку с удаленными секретами.
Ответ №1:
После просмотра сценария я понимаю, что этот сценарий работает для каждого пользователя в вашей организации, за исключением двух конкретных пользователей. В этой ситуации я настоятельно рекомендую вам создать делегирование полномочий по всему домену рабочей области. С помощью этой операции вы создадите дополнительную учетную запись, которая сможет получить доступ ко всем пользовательским данным в вашей организации, чтобы вы могли получить доступ к календарям этих двух пользователей. Единственное необходимое обновление-это использование новых учетных данных учетной записи в вашем сценарии. Пожалуйста, проверьте связанные примеры и напишите ответ, если это не работает в вашем сценарии.