API 回调如何工作,我该如何实现?

How does an API callback work and how can I implement one?

我对这些回调的工作方式有点困惑。

我看到一些 REST APIs 要求回调 URL 主要用于身份验证(Oauth),如果我理解正确,API 会在完成后调用在我们后端实现的端点.但是,如果这是一个网站并且 API 调用后端,它将如何调用用户触发 API 调用的特定会话?

我们是否生成一些唯一 ID 并使用它来标识每个会话?

还有可能实现这样的东西用于身份验证以外的用途吗?

对不起,如果这看起来微不足道,但我已经尝试了好几个小时了。

提前致谢! :)

P.S:我正在 python 使用 FastAPI 进行尝试。

是的,您通常会包含一个标识“交易”的密钥。 pre-shared(对于 Webhook,其中 API 在事件发生且请求不是对您发起的某事的响应的特定时间进行回调)或您生成的一个用于识别在将用户重定向到您自己的应用程序之外后 session 本身。

remote server makes a request to /webhooks?key=foo

.. 或者通常会发生的情况,包含一个签名作为 HTTP header,它根据已经交换的密钥对消息进行签名。

参见示例 Stripe's webhook documentation for an example of how the request is signed

然而,在用户被重定向回您的应用程序的情况下(这是许多身份验证方案的流程),重定向返回给用户的客户端 - 他们的 session 仍然是积极的。在这种情况下,重定向将包含来自身份验证系统的 session 标识符,然后您可以在后端使用它来验证用户是否确实通过了身份验证以及使用了什么授权。

/foo -> redirect -> https://remote/auth
(enters authentication information)
https://remote/auth -> redirect -> /authenticated?secret_key=foobar