> For the complete documentation index, see [llms.txt](https://docs.fortmatic.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fortmatic.com/v1.x/web3-integration/get-user-account.md).

# 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.

![](/files/-LssnsSWTRuypsluuADn)

```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.

*🎁When you create a Fortmatic account on testnet, we'll automatically send 1 ETH (on Rinkeby testnet) to your account to play with.*
