# 如何调用API

By [zxy327](https://paragraph.com/@zxy327) · 2024-02-04

---

开始使用访问令牌（去中心化网络）
================

直接连接到去中心化网络可以实现最大的灵活性、控制力和 Web3 体验。

Space and Time 在去中心化网络上运行，因此直接向该网络进行身份验证可以让开发人员获得最大程度的控制、灵活性和速度，而无需信任任何中心化中介。权衡是您必须在本地管理加密密钥并为每个请求证明身份验证和授权。

> 📘
> --
> 
> 访问令牌是核心连接类型 - 所有其他连接类型只是访问令牌工作流程的包装器或抽象。

这些说明解释了如何使用我们的 REST API 直接连接到 Space and Time 网络并进行身份验证。

最简单的身份验证方法：CLI
==============

虽然您可以使用以下工作流程手动对空间和时间网络进行身份验证，但考虑到您必须签署并返回所有所需信息的 30 秒安全超时，这有点困难。我们建议完成[CLI 工作流程](https://docs.spaceandtime.io/docs/sxtcli)，它将提供创建新用户 ID 和密钥对的步骤。以下工作流程最适合已注册并希望开始在 SxT 上构建应用程序的用户。

这些文档中的大多数示例都利用[SxT CLI](https://docs.spaceandtime.io/docs/sxtcli)并假设所有机密都保存在[.env 文件](https://docs.spaceandtime.io/docs/dotenv)中。

> 🚧
> --
> 
> 始终将您的私钥保存在安全的地方。如果您丢失了私钥，您将无法以该用户 ID 进行身份验证。为了安全起见，您可以[将新的密钥对添加到您的用户 ID 的密钥环中](https://docs.spaceandtime.io/reference/add-key-to-keychain)，并存储第二个密钥作为备份。

如何使用 API 进行网络身份验证
=================

先决条件
----

要完成此工作流程，您将需要：

*   空间[和时间 UserID ，使用一个或多个](https://docs.spaceandtime.io/docs/new-user#need-apis--add-a-new-publicprivate-keypair-to-the-user)ED25519公钥创建。最简单的方法是遵循[CLI 工作流程](https://docs.spaceandtime.io/docs/sxtcli)。
    
*   使用匹配的ED25519私钥对挑战令牌进行加密签名的机制
    

身份验证工作流程：
---------

去中心化身份验证模型建立在传统的质询/响应模型之上，用户或应用程序请求并使用本地私钥签署质询令牌，如果网络可以使用公钥进行验证，则颁发访问令牌。下面是该调用/质询/响应工作流程的地图，其中本地加密签名工作以**粗体显示**：

**本地节目去中心化网络**为特定用户 ID[请求质询令牌](https://docs.spaceandtime.io/reference/authentication-code)生成与用户 ID 存储的公钥关联的质询令牌 - 有效期 30 秒**使用 UserID 的私钥对质询令牌进行签名，并将**[**签名的质询返回**](https://docs.spaceandtime.io/reference/token-request)**到网络使用用户 ID 的公钥验证本地私钥，并返回访问令牌（25 分钟会话）和刷新令牌（30 分钟超时）以简化会话刷新在刷新令牌超时之前的任何时间，都可以**[**请求刷新的访问令牌**](https://docs.spaceandtime.io/reference/token-refresh)**，该令牌再次附带新的刷新令牌任何已活动 24 小时的会话都会被终止，强制进行完整的重新身份验证**

> 🚧
> --
> 
> 访问令牌是您的网络会话。切勿共享或失去对您的访问令牌的控制，因为这将允许其他人像您一样向空间和时间网络发出命令。

如何终止会话
======

您可以随时通过调用简单的[注销 API](https://docs.spaceandtime.io/reference/logout)来请求终止会话，这将立即使您退出所有会话。

大多数集中式 API 服务都使用 API 密钥来促进编程身份验证，这是任何开发人员都熟悉的范例。 Space and Time Gateway（秘密代理）可以管理您的 API 密钥并将其转换为对 Space and Time 去中心化网络的访问。

> 📘
> --
> 
> API 密钥由网关（秘密代理）管理。这为用户提供了运行 SQL 的简化体验，但是某些请求只能通过使用[访问令牌](https://docs.spaceandtime.io/docs/get-started-with-rest-apis)直接连接到去中心化网络来获得。

使用 Space and Time Studio 创建 API 密钥
==================================

请求 API 密钥的最简单方法是在[Space and Time Studio](https://app.spaceandtime.ai/)上。

1.  导航到 Studio 并使用现有的用户 ID 和密码登录，或者根据需要[创建新用户。](https://docs.spaceandtime.io/docs/new-user)
    
2.  点击右上角的“我的帐户”（代替“登录”），弹出帐户控件。
    
3.  单击“权限和饼干”选项卡，
    
4.  最上面的部分是“创建 API 密钥”，它有两种模式：
    
    1.  “显示 API 密钥”将显示现有的密钥前缀、注释，并允许您删除密钥
        
    2.  “创建 API 密钥”允许您提供注释（用于使用提示）并“添加”密钥
        

![](https://storage.googleapis.com/papyrus_images/ba0be83b8449b432f2349498db872d05a8e405b7c83bee6c4b60856fea8d8536.png)

“添加”新密钥后，界面将**仅显示该密钥一次**。空间和时间 API 密钥将如下所示：。您一次最多可以拥有 5 个钥匙。`sxt_dMFtbHgkW5_59sND2XMSXuEeOtXzNalSKbvZ`

> 🚧
> --
> 
> 请务必立即复制您的 API 密钥并妥善保管。出于安全原因，您只能在创建密钥时检索一次密钥。工作室将永远不会再向您展示这把钥匙。
> 
> 如果您无法复制或丢失密钥，则需要删除该密钥并创建另一个密钥。

> 👍
> --
> 
> 获得 API 密钥后，您可以开始使用[代理 SQL 执行](https://docs.spaceandtime.io/reference/execute-proxy-sql-generic)API 发出 SQL 请求。

* * *

通过 API 调用创建 API 密钥
==================

与 Space and Time Studio 中的任何操作一样，也可以直接使用 API 调用创建 API 密钥。如果您有兴趣，可以通过两次调用创建新的 API 密钥：

1.  [使用登录 API](https://docs.spaceandtime.io/reference/login)登录网关（Secrets Proxy）并收集返回的“sessionId”。
    
2.  通过向创建 API 密钥 API 提供描述和 sessionId 来[创建 API 密钥](https://docs.spaceandtime.io/reference/create-api-key)。
    

完毕！第二次 API 调用将返回新的 API 密钥。

---

*Originally published on [zxy327](https://paragraph.com/@zxy327/api)*
