Web3 Account Access – New Web3 Method to Request Account Access from Dapp Browser

metamaskweb3js

Since metamask communicated that they will no longer inject web3 by default (https://medium.com/metamask/https-medium-com-metamask-breaking-change-injecting-web3-7722797916a8) I tried to use their new suggested method to access accounts.

Here is the code:

window.addEventListener('load', async () => {
    // Modern dapp browsers...
    if (window.ethereum) {
        window.web3 = new Web3(ethereum);
        try {
            // Request account access if needed
            await ethereum.enable();
            // Acccounts now exposed
            web3.eth.sendTransaction({/* ... */});
        } catch (error) {
            // User denied account access...
        }
    }
    // Legacy dapp browsers...
    else if (window.web3) {
        window.web3 = new Web3(web3.currentProvider);
        // Acccounts always exposed
        web3.eth.sendTransaction({/* ... */});
    }
    // Non-dapp browsers...
    else {
        console.log('Non-Ethereum browser detected. You should consider trying MetaMask!');
    }
});

This works and I get access to the account, however, there is no request the user has to accept in metamask. Why is that? And how can I simulate the request to prepare my UI for this?

Best Answer

Just spotted this link - as I am running into a similar issue - Privacy Mode is still not enabled in metamask - they are indicating it will be in v4.18...

https://github.com/MetaMask/metamask-extension/issues/5676

Related Topic