2016-09-13 4 views
0

Я пытаюсь создать событие в календаре, но получить этот ответ:CalendarApi 403 Forbidden

"code" : 403, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Forbidden", 
    "reason" : "forbidden" 
    } ], 
    "message" : "Forbidden" 

Это моя просьба:

event.setStart(new EventDateTime().setDateTime(start)); 
event.setEnd(new EventDateTime().setDateTime(end)); 
event.setCreator(new Event.Creator().setEmail("[email protected])); 

calendarService.events().insert(emailId, event) 
       .setOauthToken(GlobalStateController.getGrapevineToken()); 

Я использую Google для входа в аккаунт, который прекрасно работает, и у меня нет проблем с получением событий для разных календарей. Я использую токен Google из GoogleSignInResponse.

Кроме того, на iOS учетные данные, относящиеся к моей компании-пользователю, могут создавать события, поэтому я вычитаю, что это не связано с настройками календаря или моим пользователем в целом.

Я вижу при извлечении событий календаря, что accessRolereader, что смешно, потому что у меня есть эти 3 учетных данных.

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
    <uses-permission android:name="android.permission.WRITE_CALENDAR" /> 

Справка очень приветствуется.

ответ

0

На основании этого documentation вы можете получить ответ 403 Forbidden, если вы попытаетесь изменить основные поля событий («резюме», «описание», «местоположение», «начало», «конец» или «повторение») который указывает заблокированный флаг для событий. Из этого связанного post попробуйте поделиться календарем со своей учетной записью Google Календарем с учетной записью учетной записи службы, созданной в консоли API Google.

Проблема заключалась в совместном использовании моего календаря. Что-то, чего я не знал.

Чтобы разрешить редактировать события календаря из учетной записи службы, не хватает всех шагов, которые вы выполняете в Google Api Console, вам необходимо предоставить разрешение на изменение конфигурации календаря (Конфигурация календаря -> Поделиться этим календарем) по электронной почте учетной записи, указанной в Google Api Console (адрес электронной почты).

Это может быть проблемой, если это бизнес-аккаунт, и вам придется обратиться к администратору учетной записи.

"Я вижу, при получении события календаря, что мой accessRole является reader."

Проверьте это thread. В нем указано, что:

Веб-интерфейс позволит вам обмениваться календарями с пользователями из того же домена, что и ваш аккаунт Google Apps. Чтобы использовать учетную запись службы, вы должны дать ей разрешение в Администраторе приложений, как описано here (в шаге 4 имя параметра неверно, я не могу точно его запомнить, но это 3-я ссылка в страница).

Вы также можете проверить этот раздел SO question, который может помочь.

0

Таким образом, проблема заключалась в том, что я использовал emailId из MeetingRoom в качестве emailId вместо использования своего собственного электронного письма и добавления конференц-зала в качестве участника.