Go-Ethereum

通過 MetaMask 對使用者進行身份驗證的 web3.js 簽名功能

  • April 22, 2022

我正在嘗試按照在此站點上找到的範例來使用 MetaMask 功能對使用者進行身份驗證。此外,以下站點的 web3.js 文件指定了這個符號函式:

web3.eth.personal.sign(dataToSign, address, password [, callback])

我將 dataToSign 和地址值傳遞給此函式沒有問題,但是,如何將密碼傳遞給它?

否則,這是為了簽署用於驗證使用者的 nonce 的正確功能嗎?也許我需要使用另一個功能?這是我呼叫該函式的承諾(使用不同的可能替代函式):

return new Promise((resolve, reject) =>
  // NOt sure which function among the ones below to use:
  this.web3.eth.personal.sign(this.web3.fromUtf8(nonce), account, (err, signature) => { // Or         
  this.web3.eth.sign(nonce, account, (err, signature) => { // Or
  this.web3.eth.accounts.sign(nonce, account, (err, signature) => { // Or
  this.web3.eth.personal.sign(nonce, account, password, (err, signature) => {
      if (err) return reject(err)
      return resolve([account, signature])
    })
  )

我對他們中的任何一個都沒有太大的成功。

謝謝你。Ĵ

您連結到的文章已有兩年多的歷史了!它參考了 web3 之前的 v0.20 版本。

在 web3 v1.2 中,有幾個變化。對於簽名,您可以選擇:

這個答案有一個範例,其中前兩種情況下 web3 v1.2 的語法正確:https ://ethereum.stackexchange.com/a/76578

引用自:https://ethereum.stackexchange.com/questions/84763