正文

Notion官方文档的Authorization部分提到:

In your integration code, include the token in the Authorization header with every API request, as in the following example:

GET /v1/pages/b55c9c91-384d-452b-81db-d1ef79372b75 HTTP/1.1 Authorization: Bearer {INTEGRATION_TOKEN}

由此可知,在每次提出请求的时候都要在头部加入认证信息。官方代码的Shell示例中明确表示了请求中--header 'Authorization: Bearer '"$NOTION_API_KEY"''的占位,而Javascript的代码示例却直接略过了这一点,这导致了复制使用官方Javascript代码的时候很容易因为忽略认证步骤而产生错误。

以创建数据库为例,根据官方文档Create a database的例子,其省略了请求中头部的Authorization,代码如下:

const options = {
method: 'POST',
headers: {
accept: 'application/json',
'Notion-Version': '2022-06-28',
'content-type': 'application/json'
}
}; fetch('https://api.notion.com/v1/databases', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));

如果直接使用如上所示官方文档的代码,则会返回401的错误,返回错误信息如下所示:

{
object: 'error',
status: 401,
code: 'unauthorized',
message: 'API token is invalid.'
}

完整的创建数据库请求代码为:

const options = {
method: 'POST',
headers: {
Authorization: "Bearer " + '这里应为Notion的密钥(token)',
accept: 'application/json',
'Notion-Version': '2022-06-28',
'content-type': 'application/json'
},
body: JSON.stringify(body)
} fetch('https://api.notion.com/v1/databases', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));

依此类推,在使用Notion API的时候,一定不要忘了在请求的头部加入"Authorization"部分的信息。

Reference

Notion API

记录Notion API Authorization中的一个坑的更多相关文章

  1. andriod8.1.0源码编译中的一个坑-package com.sun.javadoc does not exist

    这里记录编译过程中的一个坑!!! 编译过程中出现了下面的报错 external/doclava/src/com/google/doclava/ClassInfo.java:20: error: pac ...

  2. 记前端状态管理库Akita中的一个坑

    记状态管理库Akita中的一个坑 Akita是什么 Akita是一种基于RxJS的状态管理模式,它采用Flux中的多个数据存储和Redux中的不可变更新的思想,以及流数据的概念,来创建可观察的数据存储 ...

  3. Spring Boot 计划任务中的一个“坑”

    计划任务功能在应用程序及其常见,使用Spring Boot的@Scheduled 注解可以很方便的定义一个计划任务.然而在实际开发过程当中还应该注意它的计划任务默认是放在容量为1个线程的线程池中执行, ...

  4. xcode中得一个坑

    因项目需求变动,我必须在coredata中的WorkLogModel表中添加一个字段:抄送人.起初我给这个字段起名为copyPerson,一切准备就绪后,发现从数据库读取这个copyPerson时,第 ...

  5. PHP中的一个”坑“

    说一个极有可能在工作中遇到的问题——foreach的引用 foreach $arr = range(1,3); //[1,2,3] foreach($arr as &$val) { } for ...

  6. 需求:一个页面中需要用到多个字典数据。用于下拉选项,同时,需要将其保存为json格式。以便于key,value的相互转换。记录在实现过程中踩的坑

    本文涉及到的知识: Promise,all()的使用 js处理机制 reduce的用法 map的用法 同步异步 需求: 一个页面中需要用到多个字典数据.用于下拉选项,同时,需要将其保存为json格式. ...

  7. HashMap 中的一个“坑”!

    最近公司新来了一个小伙伴,问了磊哥一个比较"奇怪"的问题,这个问题本身的难度并不大,但比较"隐蔽",那究竟是什么问题呢?接下来我们一起来看. ​ 起因 最近公司 ...

  8. mysql 线上not in查询中的一个坑

    今天早上开发又过来说,怎么有个语句一直没有查询出结果,数据是有的呀,并发来了如下的sql(为了方法说明,表名及查询均做了修改): select * from t2 where t2.course no ...

  9. 关于abp中使用的sweetalert对话框组件的confirm确认对话框中的一个坑

    今天修改了一个功能,限制删除用户,在删除的时候不满足条件的时候提示用户原因,使用的sweet alert组件. abp框架前端集成了sweet alert 对http请求的error做了全局处理,我在 ...

  10. 记录 Java 的 BlockingQueue 中的一些坑

    最近学习了 BlockingQueue,发现 java 的 BlockingQueue 并不是每一个实现都按照 BlockingQueue 的语意来的,其中有不少坑. 直接上代码吧: 1.关于Prio ...

随机推荐

  1. #线段树#洛谷 4269 [USACO18FEB]Snow Boots G

    题目传送门 分析 模型转换一下,能通过当且仅当最长的无法通过段小于 \(d\),(这点应该是此题的精华吧) 那么按照最大深度从小到大排序,双指针在线段树上删除无法通过段,求最长区间即可 代码 #inc ...

  2. 【开源三方库】bignumber.js:一个大数数学库

    OpenHarmony(OpenAtom OpenHarmony简称"OpenHarmony")三方库,是经过验证可在OpenHarmony系统上可重复使用的软件组件,可帮助开发者 ...

  3. 财务人提高竞争力必备的技能,怎么能少了ta!

    从近年来大数据技术的发展趋势和相关产业飞速发展的状态,可以看出当前"数据分析"的热度可以说是有增无减,而且从市场上对数据分析人才的需求缺口也可以看出企业对数据分析的重视程度.未来随 ...

  4. Django Admin:自动选择当前用户

    --转载自:林肯李 该文章写的很好,特转载留待后期备用 背景 在开发 CMS 时,经常需要标记谁创建了记录.Django 为我们提供了一个很好的管理界面.但是当我们只使用默认值时,用户需要自己选择他们 ...

  5. 元启发式算法库 MEALPY 初体验-遗传算法为例

    简介 官网: MealPY官网 开源许可: (GPL) V3 MEALPY简介 官网简介翻译 MEALPY (MEta-heuristic ALgorithms in PYthon) 是一个提供最新自 ...

  6. 1、android Studio 打Jar包

    1.创建一个AndroidStudio 工程 注意下面这个Package Name 2.进入Android Studio工程中 选择Project Flies 选项 然后找到 app->src- ...

  7. HUAWEI DevEco Studio 3.1版本发布,配套ArkTS声明式开发全面升级

     原文:https://mp.weixin.qq.com/s/ap5gH7vm3BUm0nU2WOzAzw,点击链接查看更多技术内容.     今年开发者大会发布了HarmonyOS应用开发套件Dev ...

  8. 10.1K star !牛逼了!开源技术速查表,推荐人手一份!

    1.前言 在当今信息爆炸的时代,知识的获取.整理和应用显得尤为重要.随着个人职业发展和学习需求的不断提升,搭建一个个人知识库已成为提升竞争力的关键一环.个人知识库不仅是一个信息的存储库,更是一个思维的 ...

  9. jenkins 持续集成和交付 —— 参数化构建(八)

    前言 这个其实就是我们构建的脚本时候希望能有一些变量,能给我们更多的选择. 正文 选择这个: 填好后,这边就有一个参数配置: 那么接下来就是把变量放到我们的脚本中. 如下: 脚本变成变量符,这样就ok ...

  10. 实时数仓构建:Flink+OLAP查询的一些实践与思考

    今天是一篇架构分享内容. 1.概述 以Flink为主的计算引擎配合OLAP查询分析引擎组合进而构建实时数仓,其技术方案的选择是我们在技术选型过程中最常见的问题之一.也是很多公司和业务支持过程中会实实在 ...