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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fortmatic.com/v1.x/web3-integration/get-user-account.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
