# Web3Auth signer

[Web3Auth](https://web3auth.io/) is a popular embedded wallet provider that supports social logins, making it easier for users to onboard without managing private keys.&#x20;

## **Setup**

To use **Web3Auth** with **SDK Core**, first create an application that integrates with Web3Auth.

* Refer to the [Web3Auth documentation site](https://web3auth.io/docs/index.html) for instructions on setting up an application with the Web3Auth.
* For a quick start, Web3Auth provides example starter projects, available [here](https://web3auth.io/docs/examples?product=Plug+and+Play\&sdk=Plug+and+Play+Web+Modal+SDK).

## Integration

After following the Web3Auth documentation, you will have access to a `web3auth` object as shown below that you can pass as an owner to `createSafeSmartAccount`:

<pre class="language-typescript"><code class="lang-typescript">import { CHAIN_NAMESPACES, WEB3AUTH_NETWORK } from "@web3auth/base"
import { Web3Auth } from "@web3auth/modal"
import type { EIP1193Provider } from "viem"
import { EthereumPrivateKeyProvider } from "@web3auth/ethereum-provider"
import { providerToSmartAccountSigner } from "@cometh/connect-core-sdk"


const rpcUrl = process.env.RPC_URL;

const chainConfig = {
    chainNamespace: CHAIN_NAMESPACES.EIP155,
    chainId: "0x66eee", // Hex of 421614
    rpcTarget: rpcUrl,
    displayName: "Arbitrum Sepolia Testnet",
    blockExplorerUrl: "https://sepolia.arbiscan.io/",
    ticker: "AETH",
    tickerName: "AETH",
    logo: "https://cryptologos.cc/logos/arbitrum-arb-logo.png",
  };

const privateKeyProvider = new EthereumPrivateKeyProvider({
    config: { chainConfig },
  });


const web3auth = new Web3Auth({
  clientId,
  uiConfig: {},
  web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_DEVNET,
  privateKeyProvider,
<strong>});
</strong>
// Initialize for PnP Modal SDK
await web3auth.initModal();
// Trigger the login
await web3auth.connect();
 
// Get the Provider and EOA address (this will be the address of the signer) from Web3Auth
const web3authProvider = web3auth.provider as EIP1193Provider

if (!web3authProvider) {
	throw new Error("No provider found")
}

const signer = await providerToSmartAccountSigner(web3authProvider);
  
</code></pre>
