# Get User Account

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](https://medium.com/metamask/https-medium-com-metamask-breaking-change-injecting-web3-7722797916a8), developers who are using web3 can trigger user login modal with the *enable()* method in the provider.

![](https://3347162661-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lj7HukBJLlR6jbx0-eP%2F-LssmGz2Wzitv8xlPIxL%2F-LssnsSWTRuypsluuADn%2Flogin%402x.png?alt=media\&token=727a7a3d-bd76-400e-b302-625160ccc4cb)

```javascript
// Initialize provider
import Fortmatic from 'fortmatic';
import Web3 from 'web3';

const fm = new Fortmatic('YOUR_API_KEY');
window.web3 = new Web3(fm.getProvider());

// Request user login if needed, returns current user account address
web3.currentProvider.enable();
```

## Web3 Methods

User login modal can also be triggered through web3 accounts and coinbase functions.

{% tabs %}
{% tab title="Web3 Pre-1.0 Stable Versions" %}

```javascript
// Initialize provider
import Fortmatic from 'fortmatic';
import Web3 from 'web3';

const fm = new Fortmatic('YOUR_API_KEY');
window.web3 = new Web3(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.0
console.log(web3.eth.accounts); // ['0x...']
console.log(web3.eth.coinbase); // '0x...'

// Async functions that triggers login modal, if user not already logged in
web3.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...'
});
```

{% endtab %}

{% tab title="Web3 1.0 Beta Version" %}

```javascript
// Initialize provider
import Fortmatic from 'fortmatic';
import Web3 from 'web3';

const fm = new Fortmatic('YOUR_API_KEY');
window.web3 = new Web3(fm.getProvider());

// Async functions that triggers login modal, if user not already logged in
web3.eth.getAccounts().then((accounts) => {
  console.log(accounts); // ['0x...']
});
web3.eth.getCoinbase().then((coinbase) => {
  console.log(coinbase) // '0x...'
});
```

{% endtab %}
{% endtabs %}

A modal will open to ask users to sign up for an account or login with their mobile phone number.
