Used to check for browser translation.
用于检测浏览器翻译。
ブラウザの翻訳を検出する

请求多个步骤


类似于 请求多个声明,您可以在一次 DID Connect 中完成多个签名操作,不过这与之前的功能有所不同,请参阅本文以了解如何在 DID Connect 中执行多步操作。

基本过程与“快速入门”章节保持一致,请按以下方式修改处理程序中的代码:

const { fromBase58, toBase58 } = require('@ocap/util');
const { getHasher, types } = require('@ocap/mcrypto');

const { getRandomMessage } = require('../../libs/utils');
const logger = require('../../libs/logger');

const hasher = getHasher(types.HashType.SHA3);
const data = 'abcdefghijklmnopqrstuvwxyz'.repeat(32);

const action = 'request-multiple-steps';

module.exports = {
  action,
onConnect() {
  return [
    {
      signature: () => {
        return {
          type: 'mime:text/plain',
          data: getRandomMessage(),
          description: 'Please sign the text',
        };
      },
    },
    {
      signature: () => {
        return {
          description: 'Please sign the digest',
          digest: toBase58(hasher(data, 1)),
        };
      },
    },
  ];
},

  onAuth: ({ userDid, userPk, claims, step, req, updateSession }) => {
    logger.info(`${action}.onAuth`, { step, userPk, userDid, claims });
    const result = req?.context?.store?.result || [];
    const claim = claims.find((x) => x.type === 'signature');
    if (step === 1) {
      result.push({
        step,
        origin: fromBase58(claim.origin).toString(),
        sig: claim.sig,
      });
    } else if (step === 2) {
      result.push({
        step,
        origin: data,
        digest: claim.digest,
        sig: claim.sig,
      });
    }

    updateSession({
      result,
    });
  },
};
  1. onConnect 字段必须返回一个数组
  2. 在 DID Connect 过程中不会看到 Prev 按钮,因为每个声明项目都是独立的
    • image.png

  3. onAuth 回调函数会被多次调用,这意味着你可以获取从先前的 DID Connect 获取的结果,这是与 请求多个声明 的最大区别。

将前端部分调用 DID Connect 的代码更改为以下内容:

connectApi.open({
  locale: 'en',
  action: 'request-multiple-steps',
  onSuccess({ result }) {
    // multi claims data will be in result, result would be an array
  },
  messages: {
title: 'Request Multiple Steps',
    scan: 'In this session, you will do a text signature followed by a summary signature',
},
});
你获得 0 积分