Supported authentication providers
How it works
1
Choose your authentication providers
Select one or more authentication providers that best fit your platform.
2
Gather the required credentials
Each provider requires specific keys and configurations. Refer to the
separate provider pages for details on what to provide.
3
Send us your credentials
Once you have all the required details, share them with us. Our team will
set up authentication on your behalf.
User identification across providers
-
Non-custodial wallets (e.g., MetaMask): Snag identifies users by
wallet_address. If your app also identifies users by the same on-chain wallet, you can treat the user as the same across both systems and complete rules via thatwallet_address. - Email/Social login via embedded wallet providers (e.g., Dynamic, Privy, Thirdweb): When a user logs in with email or social auth via an embedded wallet provider, an embedded wallet is issued. Snag uses that embedded wallet address as the user’s identifier. If your backend uses a different provider or configuration than Snag, the same person may receive different embedded wallet addresses in your system vs. Snag.
Because different providers or configurations can produce different embedded wallets for the same email, do not assume the embedded wallet address is shared between systems. Always use the embedded wallet created within Snag when interacting with Snag.
How does our backend complete a task for a web2 (email) user on Snag?
How does our backend complete a task for a web2 (email) user on Snag?
Use the embedded wallet address issued by Snag’s authentication flow for that user. Pass this address from your client to your backend (or fetch it server-side via your wallet provider SDK for the Snag session) and call Snag using that
wallet_address to complete tasks or query user state.What if the user connects a non-custodial wallet (e.g., MetaMask)?
What if the user connects a non-custodial wallet (e.g., MetaMask)?
The identifier is the on-chain
wallet_address. You can use the exact same address across your app and Snag to reference the same user and complete external rules.Best practice: Store a mapping in your backend between your primary user ID and the
wallet_address that Snag recognizes (non-custodial or Snag-embedded). This guarantees you can reliably retrieve the correct user on Snag when initiating rewards or tasks.If you maintain your own user IDs, set
externalIdentifier when creating users in Snag. See the API docs: Create Users – External Identifier.