身份验证#

如果你使用 Agentic Wallet#

Agentic Wallet 支持两种验证方式:

用邮箱即可创建/使用钱包,无需注册开发者账号或配置密钥,适合快速上手体验。

  1. 1
    和你的 Agent 对话
    plaintext
    我要使用邮箱登录 Agentic Wallet
  2. 2
    输入你的邮箱
    plaintext
    <email>
  3. 3
    输入邮箱验证码
    plaintext
    <otp-code>
说明
私钥在 TEE 环境中生成和保管,不会暴露给任何人,包括你的 Agent。同一邮箱再次登录将恢复已有钱包,无需重新创建。

如果你使用 Open API#

使用 Onchain OS Skills/Open API 也可以通过 API Key 验证,你需要先在开发者管理平台创建项目并生成 API key。详细的步骤和相关资源请参考这里

所有对 API 发起访问的请求都需要包括下面信息来进行身份认证:

  • OK-ACCESS-KEY:API key
  • OK-ACCESS-TIMESTAMP:发起请求的时间(UTC)。ISO 格式,如:2020-12-08T09:08:57.715Z
  • OK-ACCESS-PASSPHRASE:创建 API key 时指定的 passphrase
  • OK-ACCESS-SIGN:签名

签名步骤:

  1. 1
    拼接预哈希字符串

    将 timestamp、method、requestPath、body 拼接成一个字符串。

  2. 2
    HMAC SHA256 签名

    用 secret key(在创建 API key 时生成)对预哈希字符串进行签名。

  3. 3
    Base64 编码

    对签名结果做 Base64 编码。

解释
例如,sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp + 'GET' + '/api/v6/dex/aggregator/swap', SecretKey))。其中,timestamp 与 OK-ACCESS-TIMESTAMP 必须相同。GET 是 method(HTTP请求方法,字母全部大写)。/api/v6/dex/aggregator/swap 是 requestPath(请求接口路径)。body 为空,如果请求没有请求体(通常为 GET 请求),那 body 可省略。
注意
时间戳与服务端时差不得超过 30 秒。POST 请求需包含原始请求体参与签名计算。Secret key 仅创建时可见,请通过安全渠道存储。

Postman 是一款流行的 API 开发和测试工具,允许开发人员设计、测试和记录 API。它提供了对用户友好的图形界面,用于向 API 发送 HTTP 请求。

如果你还没有安装 Postman,你可以免费从 Postman 网站下载它:https://www.postman.com/

提示
这个示例需要你具备对 Postman 的基础理解。
  1. 1
    添加参数

    适用于 GET 请求。如果请求需要查询参数,可以在 Params 选项卡下添加查询参数的 key-value pair。

  2. 2
    设置标题

    Headers 选项卡下,添加以下键-值对:

    • OK-ACCESS-KEY
    • OK-ACCESS-PASSPHRASE

  3. 3
    添加正文

    适用于 POST 请求。如果请求需要请求主体,可以在 Body 选项卡下:

    • 下拉菜单中选择 rawJSON
    • 使用 JSON 格式输入请求主体

  4. 4
    设置预请求脚本

    用于生成签名 (OK-ACCESS-SIGN) 和时间戳 (OK-ACCESS-TIMESTAMP)。在 Pre-request Script 选项卡下,根据请求类型插入以下脚本(GET 请求会排除请求主体;按需编辑密钥)。

    GET 请求示例:

    javascript
    var method = pm.request.method;
    var now = new Date();
    var isoString = now.toISOString();
    var path = pm.request.url.getPathWithQuery();
    var sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(isoString + method + path, pm.variables.replaceIn('{{secret_key}}')));
    
    pm.request.headers.add({
        key: 'OK-ACCESS-SIGN',
        value: sign
    });
    
    pm.request.headers.add({
        key: 'OK-ACCESS-TIMESTAMP',
        value: isoString
    });
    

    POST 请求示例:

    javascript
    var method = pm.request.method;
    var now = new Date();
    var isoString = now.toISOString();
    var path = pm.request.url.getPathWithQuery();
    var bodyStr = pm.request.body.raw;
    var sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(isoString + method + path + bodyStr, pm.variables.replaceIn('{{secret_key}}')))
    
    pm.request.headers.add({
        key: 'OK-ACCESS-SIGN',
        value: sign
    });
    
    pm.request.headers.add({
        key: 'OK-ACCESS-TIMESTAMP',
        value: isoString
    });