「认证」听起来很陌生,但在日常生活里,它就是我们每天都在做的「登录」。在互联网上、电脑上,有一些信息是属于你个人的,理论上应该除了你自己谁也不能让他知道。所以我们需要用账户密码,去告诉服务或者系统,现在登录的这个人是「我」,请放行。

所以和 API 有关的那些捷径里,稍微复杂一点的,其实都需要我们「登录」。只不过在捷径里,这个登录的方式和我们平常登录的方式不大一样。在文档里,它的叫法也还原为了更基本的「认证(Authentication)」。

很多 API 文档都会把「认证(Authentication)」作为单独的一个部分,甚至放到最开始。这是因为大多数服务,如果不认证,那能做的事可以说微乎其微。

第一种 Toggl 认证的方法

Toggl 的 API 也是如此,在给出简单的提交示例和返回示例之后,往下一滑,就能看到「Authentication」,并在最后给出了详细介绍「Authentication」方法与示例的链接,我们直接看这里即可:

Toggl API 文档中的认证部分

这张图,也就是文档最开始的部分已经明确给出了我们需要的所有信息。它有两种方法,一种是通过用户名和密码,另一种是通过 Token。我们先来看第一种,即用户名密码这一种,我们要遵循哪些规则:

  1. 需要用户名和密码,而且要写成 用户名:密码 的形式,中间是个半角冒号。
  2. 把 用户名:密码 用 Base64 编码。
  3. 最后在提交请求时,Header(头部)要填写的格式是:Authorization: Basic 编码内容

它还举了个例子,如果你的账户是「Aladdin」,密码是「open sesame」,最后 Header 要填写的东西就是 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

在捷径中完成 Toggl 认证

接下来我们就来看如何通过捷径来实现 Toggl 认证。

首先我们建立一个「文本」操作,把自己的账户、密码用它要求的这种格式 用户名:密码 填进去:

把 用户名:密码 填入「文本」

接下来,我们按照文档要求,用「Base64 编码」这个操作将其进行编码,再设一个变量:

为「文本」进行编码

这个时候,按顺序,我们要编辑 Header 的部分了。但是我们要知道,Header 是发起请求的时候填的,而发起请求需要一个目标 URL,换句话说我们要对一个 URL 来发起请求(回想一下上一周的内容)。所以我们现在,还要先想一下,我们要针对 Toggl 发起什么请求。

我们这个捷径,最后是要根据 Toggl 当时有没有在运行计时器,来判断下一步的行动的,也就是检查 Toggl 计时器(Timer)当时(Current)的运行状态。所以我们可以先在文档里找找,有没有请求是干这个的。

在 Time Entries 的部分文档里,我们找到了符合要求的请求链接:https://www.toggl.com/api/v8/time_entries/current。一看这个链接就能看出来,它是检查当前计时器的运行情况的:

在 Toggl 文档中搜索符合要求的请求链接

那么我们就拿它来做测试看看:

完整的认证

我们把它放到「URL」这个操作里,在「URL」之下接上「获取 URL 内容」,方法选择文档指定的「GET」。最最重要的是,我们要在头部,按照前文写过的格式,来完成认证。

接着我们就可以运行一下来检查结果了。运行之后大家会看到的结果很可能是这样:

初次看到的结果

这是因为当前 Toggl 里没有运行任何计时器。如果 Toggl 里有正在运行的计时器的话,它显示的结果应该是这样:

有计时器运行看到的结果

这里面包括了当前计时器的所有信息,有:计时器名、所属项目的 ID、起始时间、已运行时间等。

通过这两种结果的区别,我们就可以用条件判断,来让捷径根据有无计时器运行,做到启动计时器或停止计时器。

第二种 Toggl 认证的方法

第二种 Toggl 认证的方法是通过个人的 Token,这个 Token 我们可以在自己的 Toggl Profile 页找到:

个人 Token 的位置

在这个页面的底部,有个「API Token」,里面就有你的个人 Token。

通过 Token 验证的方式和用户名密码的验证方式基本一样,我们只要把 用户名:密码 改为 你的个人 Token:api_token 即可。比如我的个人 Token 是「0aff23fbfb42eee60b8e12e22c343ce0」,那么按照格式就应该是0aff23fbfb42eee60b8e12e22c343ce0:api_token

随后的编码步骤和填入 Header 的格式都是完全一样的,我直接展示一下捷径中的操作列表,各位应该就能明白:

使用 Token 时 Toggl 授权的完整操作

小结

互联网服务用于认证的方式各式各样,但在捷径里能用的认证方式非常有限,这主要是因为用户能通过捷径发送请求的方式非常有限,基本只能靠文本,而 Toggl 用于认证的两种方式正好都是通过文本转编码的方式,这也让它成为最合适的示例。

各位在使用捷径调用其它服务时,首先就是要看这个服务是不是支持这种靠文本能解决的认证方式。如果 API 文档中没有给出任何像 Toggl 这样完全靠文本就能解决的认证方式,那就不必再耗费时间折腾下去了。