如何使用API令牌

aki发表于:2020年07月14日 10:41:46更新于:2021年05月27日 18:45:20

什么是“API令牌”?

在2014年6月升级后,kintone新增了一个叫“API令牌”的新功能。这个是指在各个应用中发行的称为“令牌”的字符串,将其添加到REST API的请求头部里即可执行REST API。和以往的REST API的执行方法相比,使用API令牌来执行REST API有各种各样的好处。

好处1:不需要用户ID和密码

在此之前要执行REST API,需要将用户ID和密码保存到执行REST API的系统里。这种方式,不但很难再改密码,而且执行REST API的系统也有可能存在用户信息泄露的风险。使用API令牌执行REST API的话,不需要用户ID和密码,将更加安全。

好处2:可限定仅对某个应用执行REST API

API令牌在各个应用中发行,因此只能对发行此API令牌的应用执行REST API。这样,可以防止搞错应用等误操作导致的故障。

好处3:可限制可执行的REST API的种类

API令牌可以限制可执行的REST API的种类。例如,可以设置成“仅可执行应用的获取记录API,不可执行更新记录API”。这样可以避免指定错误的API之类的问题。且万一API令牌泄露,也可把风险降低到最低。

发行API令牌

接下来介绍如何发行API令牌以及使用其执行批量获取记录。

发行API令牌的步骤是:应用设置页面 → “设置” → 点击“自定义/服务整合”下的“API令牌”。即可看到如下页面。

0015f0d3ba4a7e74fa22c3a9ee56c3a

点击“发行”按钮,即可生成一个API令牌。“访问权限”栏里有几个复选框,可以通过勾选复选框来选择允许执行哪些API。默认情况下,勾选“查看记录”,表示仅可执行获取记录API。

0015f0d3dec2369e9edaebea06382ff

本次就按照默认的设置,点击“保存”按钮,然后点击“更新应用”。

使用API令牌执行REST API

接下来使用刚才发行的API令牌通过curl命令如下执行REST API。

curl -H "X-Cybozu-API-Token: {发行的API令牌}" "https://{域名}/k/v1/records.json?app=(应用ID)"

执行命令后,将显示添加在应用里的记录!
(※如果设置了Basic身份验证,还需要其他选项,具体请参考此链接中的-u选项以及此篇文档(日文)的在请求头部添加X-Cybozu-Authorization的方法)

您还可以指定多个API令牌,包含lookup字段的应用可以添加记录、更新记录以及获取关联记录。

有关更多信息,请参考“使用多个 API令牌可以做什么” 。

综上所述,使用API令牌就不需要使用用户ID和密码了可以更加安全地执行REST API了,请不妨试一试?

※API令牌是用于执行REST API的令牌,请注意不可用于JavaScript API。

此Tips在2014年6月版中确认过。


回复(4)

  • betsy_yan

    如果是不想写死的话推荐你使用oauth,https://cybozudev.kf5.com/hc/kb/article/1127980

    引用 的回复:

    关于kintone的认证方式,我们不想把app生成的令牌的字符串,直接写死到外部Java的程序中,而是希望每次都通过API或者其他的函数,取得那个令牌的字符串。这样可以做到吗?要是可以的话,可以给我发个参考的链接吗?使用API token 可以实现上面我的想法吗?可以的话,也请给我发个参考链接,谢谢。

  • 关于kintone的认证方式,

    我们不想把app生成的令牌的字符串,直接写死到外部Java的程序中,而是希望每次都通过API或者其他的函数,取得那个令牌的字符串。

    这样可以做到吗?要是可以的话,可以给我发个参考的链接吗?

    使用API token 可以实现上面我的想法吗?可以的话,也请给我发个参考链接,谢谢。

    引用 betsy_yan 的回复:

    你说的对。不是外部程序调用的话,也就是对kintone自身开发时用的是会话认证。是的,有效期是永久的。但是删除后就无效了。你可以直接用用户名密码来认证,但是用户认证是和这个用户自身的权限有关。同时你也可以用APItoken方式认证。使用其中之一就行。

  • betsy_yan
    1. 你说的对。不是外部程序调用的话,也就是对kintone自身开发时用的是会话认证。

    2. 是的,有效期是永久的。但是删除后就无效了。

    3. 你可以直接用用户名密码来认证,但是用户认证是和这个用户自身的权限有关。同时你也可以用APItoken方式认证。使用其中之一就行。

    引用 的回复:

    1.通过手动的方式发行了一个api令牌,生成了一个字符串。要是kinton以外的程序,要调用kinton的这个api时,把刚才生成的那个字符串设置到外部程序的token中,就可以调用api了吗?2.发行的令牌是没有有效期限吗?可以一直用?3.kinton中是否有取得这个api的token的方法,比如能通过appID和用户名密码取得对应APP的token的api?而不是通过上面1的方式。

  • 1.通过手动的方式发行了一个api令牌,生成了一个字符串。要是kinton以外的程序,要调用kinton的这个api时,把刚才生成的那个字符串设置到外部程序的token中,就可以调用api了吗?

    2.发行的令牌是没有有效期限吗?可以一直用?

    3.kinton中是否有取得这个api的token的方法,比如能通过appID和用户名密码取得对应APP的token的api?

    而不是通过上面1的方式。

注意:贴代码时请注意格式并使用"代码语言",与本文无关的问题请至“讨论社区”提问。