This function should be called whenever a new Auth token is issued to the user when they first log in, when a refreshed token is issued, or if the user is switched. This Auth token will be authenticated via a webhook endpoint that you will provide, and only once validated can the user access their wallet.
Please ensure that this userIdentifier matches the value returned by your verification endpoint.
token
String
The encoded Auth token issued to the user.
apiKey
String
secretKey
String
Return Value
Returns user information object (same as the one returned by )
{
"statusCode": 1/0,
"data": {
"userIdentifier": "userIdentifier", // the userIdentifier returned from your JWT verification endpoint
"chainWallets": [
"eth": [
"address" // list of addresses for each chain
],
...
], // list of wallet addresses for each chain
"assets": [
"eth_eth": { // assetKey
"totalBalance": "totalBalance", // total balance in BigNumber, across all user accounts
"accountBalances": [
{
"address": "address", // wallet address
"balance": "balance" // balance in BigNumber
},
]
},
...
], // list of assets owned by user
"collectibles": [
{
/****** Metafi Asset fields *******/
"symbol": "",
"chain": {
/* Metafi chain Object */
},
"decimals": 0,
"isNative": false,
"contractAddress": "contractAddress",
"assetKey": "",
"className": "Asset",
"tokenStandard": {
"name": "erc1155"
},
/****** NFT specific fields *******/
"name": "name", // name extracted from NFT metadata
"image": "imageURL", // image URL extracted from NFT metadata
"description": "description", // description extracted from NFT metadata
"tokenUri": "tokenUri", // fetched from smart contract
"metadata": { // raw NFT metadata extracted from token URI
"name": "name",
"description": "description",
"image": "imageURL",
},
"tokenId": "tokenId" // fetched from smart contract
},
...
],
}
"error": "error" // error if any
}
JWT Verification Endpoint
You can update your Auth Token verification URL on the Developer Portal under the Project Settings menu.
When the Login function is invoked, we will invoke the configured Auth Token verification URL with the token passed to us in the Login function in the body. The response must be the userIdentifier of the user to which you want the user's wallet to be linked to.
The endpoint must implement the following format:
POSThttps://your-webhook-url/path
Request Body
Name
Type
Description
token*
String
The JWT token to be verified
{
"userIdentifier": "userIdentifier"
}
{
"error": "error"
}
Example
import { Login } from '@metafi/metafi-js-package';
import { getLoginToken } from './controllers/login'
function App() {
const handleLogin = async () => {
var email = "test@mail.com";
var jwtToken = getLoginToken(email); // your logic to login user
var result = await Login(
email,
jwtToken,
"YOUR-API-KEY",
"YOUR-SECRET-KEY"
);
console.log("Login results", result);
}
return (
<div>
<button onClick={handleLogin}>Handle login</button>
</div>
);
}
export default App;
The API Key generated from the
The Secret Key generated from the
containing sample code for the JWT verification endpoint.