Embedded Wallet
Prompt users to connect to your app using their email with Embedded Wallet.
Usage
import { EmbeddedWallet } from "@thirdweb-dev/wallets";
import { Ethereum } from "@thirdweb-dev/chains";
const wallet = new EmbeddedWallet({
chain: Ethereum, // chain to connect to
clientId: "YOUR_CLIENT_ID", // client ID
});
const authResult = await wallet.authenticate({
strategy: "google",
});
const walletAddress = await wallet.connect({ authResult });
console.log("Connected as", walletAddress);
Configuration
Provide a configuration object when instantiating the EmbeddedWallet
class.
clientId (required)
The embedded wallet requires a clientId
. You can create a clientId
by visiting the Dashboard.
To learn more about API keys, visit the API key documentation.
Must be a string
.
chain (required)
The chain to connect to by default.
Must be a Chain
object, from the @thirdweb-dev/chains
package.
chains (optional)
Provide an array of chains you want to support.
Must be an array of Chain
objects, from the @thirdweb-dev/chains
package.
Methods
Inherits all the public methods from the AbstractClientWallet
class.
authenticate
Authenticate the user with any of the available auth strategies.
const authResult = await wallet.authenticate({
strategy: "google",
});
Configuration
Choose one of the available auth strategy, which comes with different required arguments.
// email verification
type EmailVerificationAuthParams = {
strategy: "email_verification";
email: string;
verificationCode: string;
recoveryCode?: string;
};
export type EmbeddedWalletOauthStrategy = "google" | "apple" | "facebook";
type OauthAuthParams = {
strategy: EmbeddedWalletOauthStrategy;
openedWindow?: Window;
closeOpenedWindow?: (window: Window) => void;
};
// bring your own authentication
type JwtAuthParams = {
strategy: "jwt";
jwt: string;
encryptionKey?: string;
};
// open iframe to send and input the verification code only
type IframeOtpAuthParams = {
strategy: "iframe_email_verification";
email: string;
};
// open iframe to enter email and verification code
type IframeAuthParams = {
strategy: "iframe";
};
connect
After authenticating, you can connect to the wallet by passing the authResult
to the connect
method.
await wallet.connect({ authResult });
Configuration
getEmail
Get the email associated with the currently connected wallet.
const email = await wallet.getEmail();
sendVerificationEmail
Send a verification code to the user's email for verification. Use this as a prestep before calling authenticate
with the email_verification
strategy.
const result = await wallet.sendVerificationEmail({
email: "alice@example.com",
});