0

我的想法是使用可验证的凭据来登录我的 Kotlin Android 应用程序。为此,我使用 Aries Cloud Agent (aca-py)。对于与代理的通信,有一个 API。该代理可以创建钱包(l​​issi、trinsic、esatus 等)和代理之间的连接,然后发送证明请求。来自证明请求的数据(可验证的凭据,例如名字、姓氏、电子邮件)用于登录。

这些步骤中的每一个都需要特定的 API 请求。可以将每个步骤实现为单独的按钮。在这种情况下,用户应首先按下按钮创建可以从钱包中扫描的二维码,从而建立连接。应按下第二个按钮后发送证明请求。一旦提供凭据,应该按下第三个按钮,以便应用程序通过 GET 请求从代理获取该信息。但是我的想法是自动化整个过程。

这可以使用代理 webhook 来完成,一旦创建了新连接,它可以通知应用程序,并且可以用作发送第二个证明请求的触发器。一旦发送证明请求,也会发生同样的情况。但是,一旦有新的 webhook,我不确定如何在我的应用程序中实现推送通知。

我读到它可以通过 Firebase 和 AWS Amplify 完成。在这两种情况下,我都认为应该为此付出代价,老实说,我对他们的服务不太熟悉。还有其他选择吗?有谁知道一些免费的替代品?目前我的想法只是像原型一样构建,因此不需要生产服务。提前致谢!

4

1 回答 1

1

网络挂钩基本上是一个面向外部的 URL,可以接收有效负载等。您可以使用Cloud Functions onRequest创建这些端点。这些使用基于 express 的请求/响应回调

例如:从客户端,在实时数据库中启动一个监听器到用户 ID,然后:创建一个可以呈现为二维码A B C的动态链接云函数URL ,然后从那里:一系列 URL以及每一步的动态链接。在此过程进行时,用户的客户端可以从 Firebase 获取实时更新,从而允许您使用当前的过程和说明来更新用户。

主旨是将进程与一次性令牌相关联,以便您的 webhook 可以知道该进程可以跟随哪个用户。您可以使用用户的 ID,但如果暴露了任何 webhook 端点,则可以预测和欺骗。

实时数据库:

processing: // location for all clients processing can listen to for updates
 +userId: { // userID so that the location is predictable should the client disconnect
     +--"State": "state1",
     +--"URL":"https://url.for.qr/code?=disposable_token"
  }
status: // location for all webhook processing and tracking of stats
 +token: { // userID so that the outcome is predictable should the client disconnect
     +--"User": "userID",
     +--"stage":"authenticating"
     +--"createdAt":"Date.now()"// track when the process started, ensure that requests can expire after X minutes/hours
  }

对于客户端,按钮按下可以完全通过实时数据库侦听器自动完成

于 2021-08-03T13:00:54.913 回答