Me gustaría compartir uno de mis calendarios con un amigo, sin cargar mis otros calendarios, y sin hacer público este calendario compartido. ¿Es posible?
Respuestas
¿Demasiados anuncios?Si está en mac:
- Abre la aplicación de calendario.
- Haz clic con el botón derecho del ratón en el calendario específico que quieras compartir con alguien.
- Haga clic en "Compartir calendario..."
- Escribe el nombre del usuario de iCloud con el que quieres compartir ese calendario.
Si en ios:
- Abre la aplicación de calendario.
- Busca el calendario que quieres compartir.
- Pulse el icono "i" alineado a la derecha de cada calendario.
- Haz clic en "Añadir persona" y escribe la dirección de tu amigo en iCloud, su nombre, etc.
Tengo que mencionar que funciona principalmente en los calendarios de iCloud, no para, digamos, el calendario de la cuenta de "Google".
Espero que te sirva de ayuda, no dudes en comentar aquí si tienes alguna otra pregunta.
Posteo mi solución por si le sirve a alguien. Consideré y abandoné a tres proveedores:
-
Google Calendar, porque el calendario sería público en Internet o la otra persona tendría que configurar una cuenta de Google y vincularla a su dispositivo (algo que está demasiado ocupado para hacer);
-
Amazon Workmail, porque la persona tendría que comprobar el calendario en la web, o vincular su dispositivo (de nuevo, están demasiado ocupados para hacerlo);
-
iCloud, porque tendría que subir todo mis calendarios locales, lo que por privacidad no quería hacer.
Mi solución fue exportar el Calendario local a un .ics
y codificar una función en mi servidor NodeJS que sirva ese archivo bajo tres condiciones:
- la URL contiene una clave secreta
- la URL contiene un parámetro GET con una clave secreta
- la solicitud proviene de una dirección IP previamente aprobada.
Y funciona bien. Aquí está el código NodeJS:
/**
*
* GET /calendar
*
* URL: http://domain.com/secret1?secret2=secret2
*
**/
router.get('/secret1', async (req, res) => {
// Access control
let ips = ["", ":::fff:127.0.0.1"];
if (!(ips.includes(req.ip))) {
return res.redirect("/404");
}
if ("secret2" != req.query.secret2) {
return res.redirect("/404");
}
let filepath = path.join(__dirname, "cal.ics");
if (!fs.existsSync(filepath)) {
console.error("*** Error in serving calendar file");
return res.redirect("/404");
}
res.sendFile(filepath);
});