Metamask and wallet connect authentication

with the function

async function login() {
  let user = Moralis.User.current();
  if (!user) {
   try {
      user = await Moralis.authenticate({ signingMessage: "hello" })
      await Moralis.enableWeb3();
      console.log(user)
      console.log(user.get('ethAddress'))
   } catch(error) {
     console.log(error)
   }
  }
}

i want users to be able to login with both metamask and walletconnect…Please can you help out with the code…a simple page with two buttons. one for metamask login and the other for wallet connect.

Thanks

Add the wallet connect provider script as per the docs and Create another login function with a different name.

async function loginWC() {
  let user = Moralis.User.current();
  if (!user) {
   try {
      user = await Moralis.authenticate({ provider: "walletconnect", signingMessage: "hello" })
      await Moralis.enableWeb3();
      console.log(user)
      console.log(user.get('ethAddress'))
   } catch(error) {
     console.log(error)
   }
  }
}

thanks for the response. But how does my dapp know which authentication was used…how does it know if it was wallet connect or metamask

As you have two buttons, add one button onclick to run walletconnect login and another to run metamask login.

okay …thank you. Please is this correct?

/** Connect to Moralis server */
 const serverUrl = 
 const appId = 
 Moralis.start({ serverUrl, appId });

 /** Add from here down */
 async function Walletlogin() {
     let user = Moralis.User.current();
     if (!user) {
         try {
             user = await Moralis.authenticate({ provider: "walletconnect", chainId: 56 })
             console.log(user)
             console.log(user.get('ethAddress'))
         } catch (error) {
             console.log(error)
         }
     }
 }



 async function login() {
  let user = Moralis.User.current();
  if (!user) {
      try {
          user = await Moralis.authenticate({ signingMessage: "Hello World!" })
          console.log(user)
          console.log(user.get('ethAddress'))
      } catch (error) {
          console.log(error)
      }
  }
}



 async function logOut() {
     await Moralis.User.logOut();
     console.log("logged out");
 }

 document.getElementById("btn-login2").onclick = Walletlogin;
 document.getElementById("btn-login").onclick = login;
 document.getElementById("btn-logout").onclick = logOut;

Yes.That seems right.

1 Like