Что такое caldav в яндекс календаре
Получаю: The remote server returned an error: (501) Not Implemented.
Что как бы намекает, что яндекс не позволяет создавать календари(но это не точно, т.к. инфы на сайте нет подробной).
Если же использовать современный подход:
using var client = new HttpClient(); var login = Convert.ToBase64String(Encoding.ASCII.GetBytes("login:password")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", login); HttpRequestMessage message = new HttpRequestMessage(new HttpMethod("MKCALENDAR"), "https://caldav.yandex.ru/calendars/login@yandex.ru/events-cal1") < Content = new StringContent(data, Encoding.UTF8, "application/xml") >; message.Headers.Authorization = new AuthenticationHeaderValue("Basic", login); using var response = await client.SendAsync(message); // UPDATE 4: заменил это на это using var response = await client.SendAsync(message, HttpCompletionOption.ResponseContentRead, CancellationToken.None); // HttpCompletionOption.ResponseContentRead (. ) response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync();
получаю: Response status code does not indicate success: 500 (Server Error).
Где я ошибся?
Сам календарь формирую при помощи Ical.Net
Сами события нормально считываются обычным client.GetAsync.
за основу взял пример
UPDATE 1: OPTIONS запрос возвращает в том числе и MKCALENDAR
UPDATE 2: Нашел вот эту штуку https://github.com/ProximoSrl/CalDav. она создает календарь(видно в веб-интерфейсе),
но список «calendar-collection-set» методом «propfind» не выдает(ошибка BadRequest).
Внезапно! по get на адрес https://caldav.yandex.ru/calendars/login@yandex.ru/ получил урлы календарей!
UPDATE 3:
опытным путем выяснилось, что урл для создания календаря должен быть «https://caldav.yandex.ru/calendars/login@yandex.ru/me»
при этом нельзя в теле ничего отправлять, только метод, логин и запрос. в ответ пусто. ни айди, ничего.
при этом список вот такой календарей
/calendars/login%40yandex.ru/inbox/
/calendars/login%40yandex.ru/outbox/
/calendars/login%40yandex.ru/events-27127/
/calendars/login%40yandex.ru/events-8486495/
/calendars/login%40yandex.ru/events-8486446/
/calendars/login%40yandex.ru/events-8486467/
/calendars/login%40yandex.ru/events-8486476/
/calendars/login%40yandex.ru/events-8486479/
/calendars/login%40yandex.ru/events-8486741/
/calendars/login%40yandex.ru/events-8486744/
/calendars/login%40yandex.ru/events-8486874/
/calendars/login%40yandex.ru/events-8486886/
/calendars/login%40yandex.ru/events-8486956/
/calendars/login%40yandex.ru/todos-86503/
можно конечно сортировать по events-.
но только если обеспечить эксклюзивный доступ.
что странно, то ли яндекс такой неправильный. по rfc caldav должен через xml-пропсы взаимодействовать.
Пролетарии всех стран, соединяйтесь! Вся власть Советам! ✊ В мире нет ничего, кроме движущейся материи.
OP Insights

Инструкция как синхронизировать Microsoft Outlook и календарь Яндекс или Google
Как настроить синхронизацию между Microsoft Outlook и Яндекс.Календарем?
3 minute read

С недавнего времени начал много пользоваться почтой на Яндексе (почта для домена или Яндекс.Коннект). Неприятным сюрпризом стало то, что, хотя почта работает по imap, но Microsoft Outlook при подключении аккаунта в Яндекс не позволяет синхронизировать календарь и контакты. Так как только почта без календаря теряет очень много своей ценности не только для меня, то после поисков и изучения вопроса, решил описать найденное решение.
В чем корень проблемы
- MS Outlook ориентирован на бизнес пользователей, у которых как правило свой почтовый сервер и, обычно, это именно Exchange
- Большая часть ПО нормально работает именно с CalDAV: iOS, Android, Mozilla Thunderbird (с плагином) и т.д.
- Онлайн календари — намного менее востребованный сервис, по сравнению с почтой, и поэтому актуальность проблемы стандартизации ниже
Рабочее решение
В общем виде, решение заключается в установке в Outlook плагина для синхронизации локального календаря с онлайн календарем.
Из нескольких опробованных вариантов, мне больше всего понравились два:
- CalDAV Synchronizer
- Простенькое расширение, синхронизирует только календарь
- Можно синхронизировать разные календари
- Легкая настройка. Можно выбрать простую настройку из списка популярных онлайн календарей, включая Google и Яндекс
- Бесплатно и работает без ограничений
- Открытый код и 300+ звезд на GitHub (для тех, кто не в курсе, это уже приличный показатель популярности)
- Более комплексная надстройка, которая также позволяет синхронизировать контакты
- Настройка сложнее, так как Яндекса в списке CalDAV провайдеров нет (нужно идти самому искать правильный путь к онлайн-календарю)
- Для работы необходима лицензия. Персональная домашняя лицензия бесплатна, но требует ежегодного обновления.
- Есть исходный код для CalDAV библиотеки, на основе которой работает надстройка
- Кажется менее популярным, чем CalDAV Synchronizer
Альтернативные (неоптимальные) решения
- Экспорт календаря Google. В календаре Google возможно указать публичную ссылку для календаря в формате, который понимает Outlook. Но у данного решения есть ряд минусов:
- MS Outlook подключает календарь только в режиме “read only”
- Нет возможности настроить права, кто угодно у кого есть ссылка, сможет прочитать содержимое календаря
- Вместо того, чтобы синхронизировать уже существующий локальный календарь с онлайн сервисом, надстройка добавляет новый локальный календарь под каждый сервис и синхронизирует уже его
- Стоит 28 евро на фоне бесплатных альтернатив
- Не сильно рассматривал вариант, так как, даже если отбросить вопрос привычки и удобства, то остается вопрос (не-)переносимости своих vba-макросов и надстроек (можно назвать это vendor lock’ом)
Заключение
На самом деле задача синхронизации Outlook и внешних провайдеров достаточно тривиальна. Предположу, что есть и другие удобные альтернативы, но описанные выше варианты показались мне достаточными. Если вы знаете более удобные способы или решения, то пишите в комментарии.
Licensed under CC BY-NC-SA 4.0
Android без Google — синхронизация с календарями Google и Яндекс

Устал я писать про серверы. Попал мне тут в руки телефон типа Huawei с каким-то 10-м Android на борту и без сервисов Google. С мая 2019 года у современных моделей смартфонов Huawei и Honor нет сервисов Google.
Сервисы Google, честно говоря, довольно странное ПО. Оно постоянно выкачивает непонятно что и занимает место, так что я сначала обрадовался, что этого лишнего хлама не будет. Оказалось, что без них ни одно приложение Google не работает. А мне хотелось бы иметь:
- Почту Gmail
- Синхронизацию контактов Google
- Синхронизацию календаря Google Calendar
- Синхронизацию заметок Google Keep
На то, чтобы вникнуть как всё это себе вернуть, у меня ушло несколько дней. Особо долго провозился с календарём.
С контактами я разобрался просто, экспортировал контакты из Google в формате vСard и импортировал их в облако Huawei. В принципе, мне без разницы где хранить контакты, лишь бы их всегда можно было восстановить после замены или сброса телефона, пусть лежат в Huawei.
Gmail и Google Keep прекрасно заработали после установки GBox.
GBox — это программное обеспечение (виртуальная машина), позволяющее скачивать и устанавливать все программы Google и софт на базе GMS (Google Mobile Services).

А вот с Google Calendar засада какая-то приключилась, хоть приложение и устанавливается из GBox, но синхронизироваться с календарём Google не хочет. Я уже было хотел перевести свои дела в Яндекс Календарь, стал читать официальную инструкцию, она-то мне и помогла. А в Яндексе предлагают поставить приложение OneCalendar или другое подобное, поддерживающее формат CalDAV.

OneCalendar позволяет подключиться к разным календарям и выводить события и мероприятия в единой ленте. Даже виджет есть.

Зелёные события у меня из календаря Яндекса, а остальные — Google.

Google Calendar добавляется легко, для этого достаточно подключить соответствующий тип аккаунта. Яндекс календарь подключается через CalDav.

Встроенных типов аккаунтов для календарей достаточно много:
- Microsoft
- iCloud
- Exchange
- CalDAV
- WebCal
- Yahoo
- GMX
- Mailbox.org
- Nextcloud
- Synology
- OwnCloud

Краткая инструкция по добавлению Яндекс Календарь в OneCalendar:
- Откройте страницу Пароли приложений вашего аккаунта Яндекс ID и нажмите Создать новый пароль.
- Выберите тип приложения Календарь и придумайте название пароля. Например, укажите название приложения, для которого вы создаете пароль. С этим названием пароль будет отображаться в списке.
- Нажмите кнопку Создать. Пароль приложения отобразится во всплывающем окне. Созданный пароль можно увидеть только один раз. Если вы ввели его неправильно и закрыли окно, удалите текущий пароль и создайте новый.
- Скачайте и установите приложение OneCalendar (это приложение бесплатное), которое может работать с протоколом CalDAV.
- Откройте приложение и на экране Account type выберите пункт CalDAV.
- Укажите следующие параметры:
User name: ваш_логин@ваш_домен
Password: пароль приложения, созданный на предыдущем шаге.
Server: https://caldav.yandex.ru - Нажмите кнопку Connect.
- Отметьте календари, которые хотите синхронизировать, и нажмите кнопку Done.
- На экране Account added выберите пункт Done — события из отмеченных календарей появятся в приложении One Calendar.
Краткая инструкция по добавлению Google Calendar в OneCalendar:
- Откройте приложение и на экране Account type выберите пункт Google.
- Укажите данные для входа в ваш Google аккаунт.
- Приложение OneCalendar запросит разрешение на доступ к аккаунту. Разрешить.
- Отметьте календари, которые хотите синхронизировать, и нажмите кнопку Done.
- На экране Account added выберите пункт Done — события из отмеченных календарей появятся в приложении One Calendar.
Как синхронизировать Битрикс24 с Яндекс Календарем
Синхронизация календарей Битрикс24 и Яндекс объединяет все ваши события в одном месте. Это поможет вести совместную работу с коллегами и планировать встречи с учетом занятости других сотрудников.
Подключение к внешнему календарю работает в одностороннем порядке: события, которые созданы в Яндекс Календаре, будут отражены в календаре Битрикс24, но события из Битрикс24 в Яндекс Календаре не появятся.
Как синхронизировать календари
Перейдите в раздел Календарь > Синхронизировать.

Нажмите Подключить другие календари.

В разделе Десктоп календари выберите Яндекс Календарь.

Заполните поля формы.

Название. Введите название для нового календаря.
Адрес сервера календаря. Для синхронизации требуется специальная ссылка, которая находится в настройках Яндекс Календаря. Нажмите символ шестеренки напротив календаря и перейдите в раздел Экспорт. Скопируйте ссылку в строке CalDAV и вставьте ее в поле Адрес сервера календаря на странице Битрикс24.

Логин. Введите адрес вашего почтового аккаунта Яндекс.
Пароль. Введите пароль от вашей учетной записи. Если все данные были введены верно, но возникла ошибка, создайте пароль приложения в Яндекс Календаре.
Пароли приложений в справке ЯндексаПосле того как все поля были заполнены, нажмите Подключить.

Как проверить, что календари синхронизировались
Если все поля заполнены верно, вы увидите успешный статус синхронизации. Все события из Яндекс Календаря будут отображены в Битрикс24.

Если время событий в календарях отображается неправильно, проверьте часовые пояса в настройках каждого календаря. Они должны совпадать.