Lazy loaded image
Lazy loaded imagenCalendar 第三方登录:Notion 篇(公共集成)
字数 1730阅读时长≈ 5 分钟
2025-6-5
type
status
date
slug
summary
category
tags
create_time
Jun 5, 2025 10:17 AM
icon
password
my_create_time

🧩 背景简介

在早期 MVP 版本中,nCalendar 同步 Notion 数据步骤如下:
1、需要用户手动复制 nCalendar 提供的 Notion 模板
2、需要用户手动创建内部集成,并生成粘贴内部集成密钥
3、需要用户手动配置内部集成的 Webhook
这对于非技术用户来说设置门槛较高,且存在一定的权限风险。
为此,nCalendar 支持接入 Notion 官方公共集成(Public OAuth Integration),即通过标准 OAuth 2.0 登录流程,完成账户连接与授权数据访问。
无需暴露永久密钥,并且在登录时就提供模板选择,无需再手动复制!
💡
PS:这也是在我们后续规划中,优先级最高的一项,目前已全面支持,欢迎大家体验。

🛠 使用场景

  • 个人用户:希望通过 Notion 登录并一键导入自己的订阅数据库
  • 🧑‍💻 技术团队:部署内部日历工具,成员使用统一的 Workspace 登录访问
  • 🌍 开放部署:面向外部访客时,简化用户注册流程,提高留存转化

✅ 实现目标

1、用户在登录页面,可点击 使用 Notion 登录
2、点击 使用 Notion 登录,跳转至 Notion 认证授权页面
3、用户在 Notion 登录页面输入 Notion 的账号密码认证
4、用户认证通过后选择 nCalendar 提供的模板,Notion 会自动将该模板复制到用户空间内
5、最后跳转至 nCalendar 管理页面,若用户账户在 nCalendar 中未注册则使用 Notion 用户名和邮箱自动注册
6、对于首次通过 Notion 登录注册的用户,还需要设置初始密码(可通过重置密码设置)
7、后续用户可以直接在 Notion 中管理订阅服务了,无需做任何配置。

🚀 集成步骤

下面介绍一下 nCalendar 是如何对接 Notion 公共集成。

1️⃣ 创建 Notion 公共集成(Public Integration)

前往 https://www.notion.com/my-integrations 创建一个新的集成:
表单填写如下:
notion image
其中比较关键的几个字段说明:
1、类型:
选择为公开
2、OAuth 域名和URI:
这里是使用 Notion 登录成功的回调地址,Notion 会携带 code 回调这个地址,然后我们通过 code 再请求 token,完成整个认证过程。
📌 PS:很关键因为我使用的是Dex,可以统一设置 /callback
3、可选模板的Notion URL:
因为我们 nCalendar 自带了一套订阅模板,可以把这个地址贴上,就省去了用户再去手动复制模板的操作了。
4、最后保存集成
保存后 Notion 会提供对接需要使用到的 ClientID(OAuth客户端ID) 和 Client Secret(OAuth 客户端密钥),这个很重要在我们后续配置 Dex 时会用到。
notion image
 

2️⃣ 定制 Dex notion connector

因为 Notion 公开集成也是使用的 OAuth 协议,原以为这里我们可以完全复用 Dex 自带的 oauth connector。
但是呢 Notion 的 OAuth 协议夹带了私货。。。
比如通过 token 获取 用户信息 的过程中,还需要携带特定的请求头:
还有返回的用户信息格式也不是 OAuth 统一的规范,我们还需要自定义解析这个信息,才能从其中获取到用户名、邮箱等信息。
因此这里我们选择复制一份 oauth connector,再定制创建一个 notion connector,完成对 Notion 的对接过程。

3️⃣ 配置 Dex notion connector

当我们定制完 notion connector 之后,需要在 Dex 的配置文件中添加以下 connector 配置:
这里就需要使用到上面我们第一步创建公共集成时,Notion 提供的 clientID 和 clientSecret。

4️⃣ nCalendar 客户端对接

这里就是纯粹的业务逻辑了,为此我们还需在 Dex 配置一个 Notion 专用的客户端:
这里主要用于 Dex 验证通过后,需要跳转的 nCalendar 地址。
在这个地址中,nCalendar 可以做一些业务逻辑处理,如:该用户未注册则自动注册等。

5️⃣ 使用 Notion 登录

好了,经过以上层层配置,终于我们可以使用 Notion 登录,并实现上面刚开始的目标。
用户操作步骤如下:
1、进入 nCalendar 登录页面,点击使用 Notion 登录
notion image
2、在 Notion 认证页面使用 Notion 邮箱密码登录
notion image
3、登录成功后,nCalendar 会自动请求获取权限
notion image
4、选择 nCalendar 提供的订阅模板
notion image
至此无需再手动复制模板了!!!
也无需再创建配置复杂的内部集成了!!!
Notion 会自动将我们提供的模板复制到你选择的空间内, 并配置好公开集成。

6️⃣ 设置 nCalendar 初始密码

先别高兴的太早,由于采用第三方登录,我们无法获取到账户的密码信息。
您也就无法在手机或PC端使用我们的账号进行登录,最后还是无法同步。
因此在首次登录成功进入个人信息页面后,我们强烈建议您立即设置初始密码(重置密码)

✅ 总结

通过集成 Notion 官方公共集成,nCalendar 提供了一种更安全、易用的第三方登录方式,使用户无需手动复制模板和配置复杂的内部集成,即可接入系统。
🔐 优势总结
  • 更低的配置门槛,极大的简化了用户前期配置难度,提升用户体验
  • 官方托管身份令牌,大大增强安全性
  • 支持多人 Workspace,满足团队协作场景
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
上一篇
Nginx+ACME服务器搭建
下一篇
nCalendar 第三方登录集成:GitHub 篇(Dex)

评论
Loading...