Failed to verify - user

  • SDK Version: SFA 7.3.0
  • Platform: Web
    when a user is trying to login using linkedin (via auth0) we get the following error:
    Error occurred while verifying params could not verify identity.

from the investigation is seems that the problem is with the case sensitivity and unlike your other sdks the sfa is missing the flag “isVerifierIdCaseSensitive”

Please advise

Hi @omryo,

Thank you for sharing your concern. It seems like a configuration issue. Can you please provide us with the following details so that we can better assist you?

  • Verifier Name
  • Web3Auth Network
  • idToken you are passing

Looking forward to hearing back from you soon.

verifier name: ‘grappa-social’ (aggregate social provider)
web3auth network: cyan
idToken is being returned from auth0 session

also you have a bug in your authentication to the web3auth dashboard , when i connect using my email i reach our company enterprise account but when i connect using google (same email) i get a detached account. when i try to login to to this site (community) using my email i get an error.
while i am able to connect using google, you do not recognize my account as a scale paid subscriber and that might be the reason it takes you a week to response?

Could you please provide us with both email addresses so that we can verify the issue on our end?

Thank you for sharing the verifier details. Based on the information provided, it appears that you are using an aggregate verifier that combines Google and Twitter via Auth0.

May I please request you share the code snippet that you are using for configuration and login?

I have a document that includes a sample of how the aggregate verifier can be used, which I can share with you.

it is the same email address!!!
omryo@grappa.xyz

thank you for your reply, i noticed few differences between our code and the manual you have shared.
the main difference is The sdk, we are using the core Sfa sdk (@web3auth/single-factor-auth) while in the example you shared the NoModal sdk is used ({ Web3AuthNoModal } from “@web3auth/no-modal”);
the core object does not have .connectTo function, only .connect which does not accept “isVerifierIdCaseSensitive” flag.

also we do not run call the web3auth.configureAdapter(openloginAdapter) at all, isnt it being fetched from the account?.

here is the a snippet of the our code (i’ve cleared logs and unrelated code):

try {
          const web3Auth = context.web3Auth!
          

          if (!web3Auth) {
            return
          }

          if (!idToken) {
           
            return
          }

          if (!web3Auth.ready) {
           

            throw new Error('Web3Auth status not ready')
          }

          const sessionId = web3Auth.sessionId
          if (!user?.email) {
            logger({
              msg: 'Attempting to instantiate Web3 provider without user',
              severity: 'warn',
            })

            throw new Error('Web3Auth status not ready')
          }


          const loginParams = {
            verifier: Web3AuthDeps.socialVerifierName, /// 'grappa-social'
            verifierId: user.email,
            idToken: idToken,
            subVerifierInfoArray: [
              {
                verifier: user.loginProvider,
                idToken,
              },
            ],
          }


          let web3AuthProvider
          try {
            if (!web3Auth.connected) {
              
              if (web3Auth.status !== ADAPTER_STATUS.CONNECTED) { 
                  usedIdTokens.current.add(idToken)
                  web3AuthProvider = await web3Auth.connect(loginParams)
                
              } 
            } else {
              web3AuthProvider = web3Auth.provider
            }
          } catch (error) {
            throw new Error('Error while connecting to Web3 provider')
          }

          const provider = new ethers.providers.Web3Provider(web3AuthProvider as ethers.providers.ExternalProvider)
          span.addEvent('Web3 provider instantiated')
          span.setAttribute('provider', JSON.stringify(provider))



          try {
            const address = (await provider.getSigner().getAddress()).toLowerCase()
            setContextState({
              web3Auth,
              provider,
              address,
            })
          } catch (err) {
            throw new Error('Detected a corrupted Web3Auth provider')
          }
        }

Hey @omryo

Here’s an example with SFA: web3auth-core-kit-examples/single-factor-auth-web/sfa-web-aggregate-verifier-example/src/App.tsx at main · Web3Auth/web3auth-core-kit-examples · GitHub

This should be the sub-verifier name.

But where is the isCasesensitive flag???

And what about the account issue?

Hi,
Can we please schedule a live session? if you read our code snippet I shared you could see this is already the defined verifier’s name. the problem is not with the verifier since this problem is not persistent for all users. it only occurs for some and i suspect it is related to case sensitivity.
Also, i am still having issues with my email leads to two separated accounts and i don’t see anyone addressing it.

Hey @omryo

Make sure to pass the exact same value in verifierId as present in idToken.

Use the following to parse the token. From here, pass the parsedToken.email rather than user.email.

function parseToken(token: string) {
  const base64Url = token.split(".")[1];
  const base64 = base64Url.replace("-", "+").replace("_", "/");
  return JSON.parse(atob(base64 || ""));
}
const parsedToken = parseToken(idToken);

const loginParams = {
  verifier: Web3AuthDeps.socialVerifierName, /// 'grappa-social'
  verifierId: parsedToken.email, // changed it from user.email to parsedToken.email.
  idToken: idToken,
  subVerifierInfoArray: [
    {
      verifier: user.loginProvider,
      idToken,
    },
  ],
}