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后,有两种可靠方式获取用户授权的页面/数据库:- 调用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)。 - 验证特定资源权限(按需)
如果你需要确认某个具体页面是否在授权范围内,直接调用GET /v1/pages/{page_id}接口。返回200表示有权限,返回403则说明该页面不在用户授权的范围内。
- 调用Search接口
额外说明
如果用户授权的是整个工作区,你可以调用GET /v1/users/me接口,返回的workspace字段会包含工作区的权限信息;如果是单个页面,Search接口只会返回这一个页面结果。
内容的提问来源于stack exchange,提问作者Kazutaka Shimizu
相关产品推荐
相关产品推荐

