You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Notion OAuth认证时,如何获取用户授权访问的页面/数据库?

如何获取Notion OAuth授权的页面范围结果
  • 完成OAuth回调,拿到访问凭证
    用户完成授权后,Notion会跳转到你预先配置的回调URL,同时带上code参数。你需要用这个code调用Notion的token交换接口,换取access_token——这是后续所有API请求的核心凭证。
    示例代码(Python):
import requests

token_url = "https://api.notion.com/v1/oauth/token"
payload = {
    "grant_type": "authorization_code",
    "code": "用户授权后回调传来的code",
    "redirect_uri": "你的回调地址",
    "client_id": "你的客户端ID",
    "client_secret": "你的客户端密钥"
}
response = requests.post(token_url, json=payload)
token_data = response.json()
access_token = token_data["access_token"]
  • 调用API确认授权的资源范围
    拿到access_token后,有两种可靠方式获取用户授权的页面/数据库:

    1. 调用Search接口
      直接调用Notion的Search API,不带任何搜索关键词,返回的结果就是用户授权你访问的所有资源。因为OAuth token的权限严格限制在用户选择的范围内,所以Search只会返回这些授权内容。
      示例代码:
      search_url = "https://api.notion.com/v1/search"
      headers = {
          "Authorization": f"Bearer {access_token}",
          "Notion-Version": "2022-06-28"
      }
      response = requests.post(search_url, headers=headers, json={"query": ""})
      authorized_resources = response.json()["results"]
      
      遍历authorized_resources就能看到所有授权的页面、数据库,每个结果里的object字段会标明类型(page或database)。
    2. 验证特定资源权限(按需)
      如果你需要确认某个具体页面是否在授权范围内,直接调用GET /v1/pages/{page_id}接口。返回200表示有权限,返回403则说明该页面不在用户授权的范围内。
  • 额外说明
    如果用户授权的是整个工作区,你可以调用GET /v1/users/me接口,返回的workspace字段会包含工作区的权限信息;如果是单个页面,Search接口只会返回这一个页面结果。

内容的提问来源于stack exchange,提问作者Kazutaka Shimizu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:22:38