In order for web3 to work and grab the end-users' Ethereum wallet addresses, the users have to login first (similar to unlocking account in MetaMask). You can simply trigger the login for users with the web3 function call below.
Trigger User Login Modal
In accordance with the EIP-1102 update, developers who are using web3 can trigger user login modal with the enable() method in the provider.
// Initialize providerimport Fortmatic from'fortmatic';import Web3 from'web3';constfm=newFortmatic('YOUR_API_KEY');window.web3 =newWeb3(fm.getProvider());// Request user login if needed, returns current user account addressweb3.currentProvider.enable();
Web3 Methods
User login modal can also be triggered through web3 accounts and coinbase functions.
// Initialize providerimport Fortmatic from'fortmatic';import Web3 from'web3';constfm=newFortmatic('YOUR_API_KEY');window.web3 =newWeb3(fm.getProvider());// Sync functions that returns users' addresses if they are already logged in with enable().// Not recommended as sync functions will be deprecated in web3 1.0console.log(web3.eth.accounts); // ['0x...']console.log(web3.eth.coinbase); // '0x...'// Async functions that triggers login modal, if user not already logged inweb3.eth.getAccounts((error, accounts) => {if (error) throw error;console.log(accounts); // ['0x...']});web3.eth.getCoinbase((error, coinbase) => {if (error) throw error;console.log(coinbase); // '0x...'});
// Initialize providerimport Fortmatic from'fortmatic';import Web3 from'web3';constfm=newFortmatic('YOUR_API_KEY');window.web3 =newWeb3(fm.getProvider());// Async functions that triggers login modal, if user not already logged inweb3.eth.getAccounts().then((accounts) => {console.log(accounts); // ['0x...']});web3.eth.getCoinbase().then((coinbase) => {console.log(coinbase) // '0x...'});
A modal will open to ask users to sign up for an account or login with their mobile phone number.