MetaMask stellt Konten bereit

Ab dem 2. November wird MetaMask standardmäßig keine Benutzerkonten mehr anzeigen und wir müssen es tun. Ich bin verwirrt darüber, wie wir das in unsere Dapps integrieren sollen.

Zum Beispiel habe ich eine Standard-web3.js-Datei mit dem folgenden Code:

import Web3 from 'web3';



let web3;
if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
  // metamask is running
  web3 = new Web3(window.web3.currentProvider);
} else {
  //user is not running metamask
  // create provider through infura
  const provider = new Web3.providers.HttpProvider(
    // pass url of remote node
    'https://rinkeby.infura.io/v3/censored'
  );
  web3 = new Web3(provider);

}
export default web3;

Sollen Änderungen in der Datei web3.js vorgenommen werden? Oder sollte ich eine Schaltfläche auf der Website erstellen, auf die der Benutzer klicken muss, um mir Zugriff auf sein MetaMask-Konto zu gewähren?

Hi @cristian jetzt musst du den Zugriff auf die Benutzerkonten anfordern. Sie können sehen, was die Änderungen sind und wie Sie diese implementieren hier medium.com/metamask/eip-1102-preparing-your-dapp-5027b2c9ed76
Ich denke, das wird bei jeder App anders sein, aber im Allgemeinen erklärt es der Medium-Artikel ganz gut.
Ich brauche eine weitere Erklärung. Ich verstehe es immer noch nicht vollständig, oder zumindest fühle ich mich mit den bereitgestellten Informationen nicht sicher. Muss ich Ethereum.enable() für JEDEN web3-Aufruf verwenden???? Oder kann ich es nur einmal aufrufen und MetaMask wird es für die Benutzer merken?

Antworten (1)

Lösung gefunden! Höchstwahrscheinlich haben Sie eine web3.js-Datei, die Sie in Ihre Standard-App exportieren. Die Lösung ist einfach:

import Web3 from 'web3';



let web3;
if (window.ethereum) {
  // metamask is available
  window.ethereum.enable();    
  web3 = new Web3(window.web3.currentProvider);
} else {
  //user is not running metamask
  // create provider through infura
  const provider = new Web3.providers.HttpProvider(
    // pass url of remote node
    'https://rinkeby.infura.io/v3/censored'
  );
  web3 = new Web3(provider);

}
export default web3;