Грабли, на которые я наступил при скрещивании CRM c Google Calendar

Как обычно происходит с коробочными продуктами, не все решения устраивают, и приходится улучшать бизнес-процессы при помощи внешних инструментов. В нашем случае трудоемко было работать с встроенным календарем. Основная проблема заключалась в том, что нельзя было одновременно ставить задачу и смотреть занятость сотрудников — при этом возникали сложности у двух смежных отделов.Мы решили внедрить гугл календарь: imageДо этого с API Гугла я не работал, поэтому первым делом по поиску нашел документацию, удобно, что там же сразу была указана ссылка на GIT исходников.

Первые грабли: в указанной документации описаны объекты, которые сейчас в исходниках завернуты в другие объекты. Изучив код и поискав решения в интернете, я написал код подключения к календарю и добавил первый календарь.

«Здорово, как быстро все получилось! У нас почти все готово, осталось немного: добавить все нужные нам календари и закинуть в них события», подумал я и открыл интерфейс календаря в браузере.И тут меня поджидали вторые грабли: в интерфейсе я не обнаружил добавленных календарей. Как понять, где они пропали? Я написал код, который возвращал список созданных календарей. Оказалось, их там было уже штук 10. Как же так — все работает, календари создаются и даже возвращаются. А в интерфейсе их нет как не было…

OK Google, что я делаю не так?

Пришлось опять копать. Нашел: календари добавляются в сервисный аккаунт (147837410720-t2rf13ce77not3h58ubgсme3q682nr54@developer.gserviceaccount.com). Для того чтобы календари были видны, их, оказывается, необходимо было добавить к основному.

Добавляем следующим образом :

$service = GoogleAuth: getInstance (); $scope = new Google_Service_Calendar_AclRuleScope (); $scope→setType ('user'); $scope→setValue ('Ваш основной емаил@gmail.com'); $rule = new Google_Service_Calendar_AclRule (); $rule→setRole ('owner'); $rule→setScope ($scope); $result = $service→acl→insert ($calId, $rule);

Я расслабился и наслаждался, календари создавались, события записывались, все работало как часы. Но и тут меня поджидали очередные грабли! Внезапно в один тяжелый понедельник Гугл перестал принимать токен, выдавая ошибку (invalid_grant). Искали два дня всем отделом черную кошку в темной комнате. Нашли. Недавняя смена времени на зимнее время привела к отставанию нашего сервака от реального времени, и Гуглу это не нравилось. После корректировки времени все заработало.Пока календари работают, с интересом ждем очередных грабель от Гугла.

Буду рад, если данным постом кому-нибудь помогу сократить время на поиск решения проблем.

© Habrahabr.ru