隐私政策
1. 介绍
我们致力于保护您的隐私,并以公开、透明的方式处理您的个人数据。本隐私政策解释了我们如何收集、使用、共享和保护您的个人信息。
2. 我们收集的信息
我们收集和处理以下个人信息:
- 帐户信息:电子邮件地址和姓名
- 使用数据:有关您如何使用我们服务的信息,包括:
- 访问时间和日期
- 访问的功能和页面
- 服务交互模式
- 性能数据
3. 我们如何使用您的信息
我们将您的个人信息用于以下目的:
- 提供和维护我们的服务
- 改进和优化我们的服务
- 确保我们平台的安全
- 就与服务相关的事宜与您沟通
- 遵守法律义务
4. 分析
我们使用注重隐私的分析服务来分析服务使用模式并改进我们的平台:
- Plausible Analytics:位于德国的自托管实例。默认情况下注重隐私且无 cookie。
- PostHog Analytics:托管在欧盟(德国法兰克福)。默认情况下采用无 cookie 跟踪,注重隐私。接受 cookie 可启用持久跟踪功能以改进分析。
两种分析解决方案均托管在欧盟,并符合 GDPR。收集的数据是匿名的,仅用于改进我们的服务。默认情况下,两种服务都使用无 cookie 跟踪。如果您接受 cookie,PostHog 将启用持久跟踪,以更好地了解回访用户模式。
5. 数据共享和第三方服务
我们仅与为提供我们的服务所必需的选定第三方共享您的数据:
- Cloudflare:用于内容交付和安全服务
- Hetzner:用于基础设施和托管服务
- Discord API:我们的Discord机器人与Discord API交互,在Discord服务器内提供日程安排功能。与Discord共享的数据受Discord隐私政策的约束。
- DiceBear API:时区应用使用此API根据参与者姓名生成头像图片
这些服务提供商受合同约束,以保护您的数据并仅将其用于指定目的。
6. 数据存储和安全
您的数据存储在欧盟内的安全设施中。我们采取适当的技术和组织措施来保护您的个人信息免遭未经授权的访问、更改、披露或破坏。
7. 您在 GDPR 下的权利
作为用户,您拥有以下权利:
- 访问您的个人数据的权利
- 更正不准确数据的权利
- 删除权("被遗忘权")
- 限制处理的权利
- 数据可移植权
- 反对处理的权利
- 撤回同意的权利
要行使任何这些权利,请使用"联系我们"部分提供的信息与我们联系。
8. Cookie 和跟踪
我们使用以下类型的 cookie:
基本 Cookie
- 身份验证 cookie:用户登录和会话管理所必需(NextAuth 会话令牌)
- 偏好存储:用于用户界面偏好和设置的本地存储
分析 Cookie(可选)
- Plausible Analytics:位于德国的自托管、注重隐私的分析服务(无 cookie)
- PostHog Analytics:位于德国法兰克福的欧盟托管分析服务
- 默认无 cookie:使用仅内存存储跟踪使用情况,无需 cookie
- 经同意的持久跟踪:当您接受 cookie 时,PostHog 会持久存储数据以跟踪回访用户并提高分析准确性
- 仅匿名数据:无论同意级别如何,都不会收集或跟踪任何个人信息
您可以随时通过我们的 cookie 横幅或清除浏览器数据来管理您的 cookie 偏好。基本 cookie 无法禁用,因为它们是网站基本功能所必需的。
9. 儿童隐私
我们的服务不针对 13 岁以下的儿童。我们不会故意收集 13 岁以下儿童的个人信息。
10. 本隐私政策的变更
我们可能会不时更新本隐私政策。我们将通过在此页面上发布新的隐私政策并更新"最后更新"日期来通知您任何更改。
11. 联系我们
如果您对本隐私政策或我们的数据惯例有任何疑问,请在此处与我们联系。
12. 数据保护机构
如果您位于欧洲经济区 (EEA) 并认为我们正在非法处理您的个人数据,您有权向您当地的数据保护监管机构提出投诉。
13. Google 日历 Webhook
当您将 Google 日历连接到 WhenToMeet 时,我们会使用安全的 webhook 来保持您的预订同步——即使您直接在 Google 日历中进行更改也是如此。如果您在 Google 日历中删除或取消预订活动,Google 会通知我们的 webhook 端点。然后我们:
- 验证请求并将其与您的帐户匹配
- 检查哪个预订受到影响
- 在 WhenToMeet 中更新您的预订状态并发送相关通知
处理的数据:
- 仅识别和管理您的预订所需的最少活动元数据(例如活动 ID、状态和时间)
- 不会为 webhook 处理访问或存储其他日历数据
安全与隐私:
- 所有 webhook 请求都经过验证
- 仅处理与您的预订相关的活动
- 所有操作都会被记录下来以供安全和审计之用
- 不会为 webhook 处理与第三方共享任何数据
您可以随时断开您的 Google 日历以停止 webhook 处理。有关更多信息,请参阅我们的联系页面。
14. 日历凭据存储(iCal 和 CalDAV)
当您连接需要身份验证的私有 iCal 或 CalDAV 日历时,我们会安全地存储您的日历凭据以维持对您的日历数据的持续访问。
我们存储的内容:
- 日历订阅 URL 或服务器地址
- 用户名或帐户标识符(以纯文本形式存储用于身份验证)
- 密码或访问令牌(使用 AES-256-GCM 加密进行加密)
安全措施:
- 强加密:密码使用 AES-256-GCM 身份验证加密,每个凭据都有唯一的盐和初始化向量
- 安全密钥派生:加密密钥是使用 scrypt 派生的,scrypt 是一种内存密集型密钥派生函数
- 仅限服务器端:凭据绝不会发送到您的浏览器或客户端设备
- 需要 HTTPS:所有日历数据都通过安全的 HTTPS 连接获取
- 访问控制:只有您可以通过我们的平台访问您的日历连接
- 自动删除:当您断开日历或删除帐户时,凭据将被永久删除
凭据的使用方式:
您存储的凭据仅用于:
- 获取日历活动以显示您的空闲时间
- 将您的日历数据与 WhenToMeet 同步
- 需要时更新日历连接
您的控制权:
- 您可以随时从您的设置中断开任何日历连接
- 断开日历会立即删除所有关联的存储凭据
- 您可以在您的帐户设置中查看所有连接的日历
- 我们建议定期查看和轮换您的日历凭据
数据保留:
日历凭据仅在日历连接处于活动状态时保留。当您断开日历或删除帐户时,所有关联的凭据都会立即从我们的系统中永久删除。
重要说明:
- 我们绝不会与第三方共享您的日历凭据
- 我们使用日历服务器提供的基本身份验证(用户名/密码)——我们建议在支持的情况下使用特定于应用程序的密码
- 为了获得最大程度的安全性,请考虑使用支持基于令牌的身份验证而不是基于密码的身份验证的日历服务
如果您对存储日历凭据有任何疑虑,请联系我们讨论替代方案。
15. Discord机器人
我们的Discord机器人连接Discord和WhenToMeet,直接在Discord服务器内启用日程安排功能。
收集的数据:
- Discord用户ID和用户名:用于在Discord中识别您并将投票与您的Discord身份关联
- 服务器(Guild)和频道ID:用于将机器人响应传递到正确的Discord频道
- 账户关联令牌:在将您的Discord账户与WhenToMeet账户关联时生成的临时令牌。这些令牌在15分钟后过期并自动清理
- 投票数据:通过机器人创建的投票标题、时间段选项和投票(与您的Discord用户名关联)
- 事件分享:当您在Discord中分享WhenToMeet事件时,机器人会将Discord消息与相应的WhenToMeet事件关联
分析:
Discord机器人使用与WhenToMeet主应用程序相同的分析服务(PostHog、Plausible和Sentry),如第4节所述。分析跟踪是可选的,并遵循相同的隐私原则。
数据保留:
- 账户关联令牌在15分钟后或使用后自动删除,以先到者为准
- 投票和投票数据在关联的WhenToMeet事件存在期间保留
- 当WhenToMeet事件被删除时,所有关联的Discord投票和投票数据也会被删除
您的控制:
- 您可以随时取消Discord账户与WhenToMeet的关联
- 通过Discord机器人提交的投票与您的Discord用户名绑定
- 您可以通过联系我们请求删除您的数据
16. 时区应用(timezones.whentomeet.io)
时区应用是一个客户端时区比较工具,不需要身份验证,也不在我们的服务器上存储任何用户数据。
客户端存储:
- localStorage:用于存储您的主题偏好和工作时间设置。此数据永远不会离开您的浏览器。
基于URL的分享:
- 当您创建可分享链接时,参与者姓名和时区直接编码在URL中。任何拥有该URL的人都可以看到其中包含的参与者姓名和时区。
分析:
- 仅Plausible Analytics:时区应用使用我们自托管的Plausible Analytics实例(位于德国)。Plausible默认无cookie,不收集个人信息。
第三方服务:
- Google Fonts:用于为应用程序界面加载字体
- DiceBear API:用于根据参与者姓名种子生成头像图片。您输入的参与者姓名会被发送到DiceBear API以生成相应的头像。
Cookie:
时区应用不设置任何cookie。Plausible Analytics默认在无cookie的情况下运行。