# Openfort Documentation > Comprehensive tutorials on smart accounts, API integration, and wallet management. ## Docs - [Entity Addresses](/docs/configuration/addresses): A list of contract addresses deployed by Openfort. - [API Keys](/docs/configuration/api-keys): Every account is divided into two universes: one for *testnet*, and one for *mainnet*. All requests exist in one of those two universes, and objects in one universe cannot be manipulated by objects in the other. In **test mode**, transactions can only go to **testnet networks**. - [Supported Blockchains](/docs/configuration/chains): You can find a list of the chains that Openfort currently supports below. Openfort is compatible with all EVM chains. - [Configure allowed domains](/docs/configuration/configure-origins): To secure use of your client-side Openfort publishable key, we strongly recommend setting allowed domains for any application in production. This is a security best practice that prevents arbitrary applications from reusing your openfortpublishable key in their own site. - [Backend wallets](/docs/configuration/dev): Backend wallets serve as an internal account for games and developers to manage assets and flows. The accounts are EOAs (Externally Owned Account). - [Ecosystem dashboard configuration](/docs/configuration/ecosystem): Creating your own global wallet is an **enterprise feature**. To enable it, please [contact us](https://t.me/joalavedra). - [Using a third-party auth provider](/docs/configuration/external-auth): Openfort's signer solution enables the user onboarding by integrating with established backend solutions and authentication providers that support JWT-based authentication. This strategy provides a trusted, scalable, and versatile framework that supports an extensive range of authentication options. - [FAQs](/docs/configuration/faqs): Yes, you can sponsor fully or partially with the network token or ERC-20. - [Pay Gas Fees with ERC20 Tokens](/docs/configuration/gas-erc20): Gas fees can be a hurdle for many users in blockchain applications. This guide will help you configure gasless transactions where the gas is paid using an ERC20 token. Choose between dynamic or fixed-rate payment strategies. - [Gas sponsorship](/docs/configuration/gas-sponsorship): Whether you're building a game, marketplace, or any web3 application, these policies give you the tools to create seamless user experiences by controlling how transaction fees are handled. - [Configuration](/docs/configuration): The Openfort configuration settings determine how your application interacts with our services. - [Events](/docs/configuration/notifications): When building Openfort integrations, you might want your applications to receive events as they occur in your Openfort accounts, so that your backend systems can execute actions accordingly. - [How billing works](/docs/configuration/project-billing): Our goal at Openfort is to provide a *predictable* billing system that grows with your project. - [Security & Trust at Openfort](/docs/configuration/security): At Openfort, safeguarding the data and digital resources of your users is our utmost concern. We understand the crucial role we play in supporting our customers' applications and deeply value the trust placed in us. - [Social Login](/docs/configuration/social-login): OAuth is commonly used for things like logging in to a social media account from a third-party app. It is a secure and convenient way to authenticate users and share information between applications. - [Gas Policy Strategies & Rules](/docs/configuration/sponsor-rules): Gas policies offer three distinct strategies for handling transaction fees: - [Manage teams](/docs/configuration/team): Openfort provides granular **access controls** to manage permissions across your organizations. For each project, a user can have one of the following roles: - [Manage Users](/docs/configuration/users): Use the **Users** page of the dashboard to manage all registered players in your Openfort application. - [Webhooks](/docs/configuration/webhooks): Openfort uses webhooks to push real-time notifications to you about your transactions. All webhooks use HTTPS and deliver a JSON payload that can be used by your application. You can use webhook feeds to do things like: - [Backend Wallets](/docs/overview/backend-wallets): Openfort provides powerful backend wallet APIs that allow developers to provision and manage wallets directly from their server-side applications. These backend wallets offer a robust set of features for creating, controlling, and automating blockchain interactions at scale. - [Pricing](/docs/overview/choose) - [Global Wallets (Ecosystem SDK)](/docs/overview/ecosystem-wallets): Openfort's global wallets provide a comprehensive solution for creating interoperable wallets across multiple games and applications within a unified ecosystem. These wallets offer advanced features that enhance user experience and simplify asset management for both players and developers. - [Embedded Wallets (Headless Wallets)](/docs/overview/embedded-wallets): Openfort's embedded wallets provide a seamless way to integrate wallet functionality into your application without any user interface. These embedded wallets offer a range of features to enhance user experience and security, allowing for onchain interactions. - [Welcome to Openfort](/docs/overview): Openfort builds secure wallet infrastructure and user authentication to enable better financial products. We provide embedded wallet solutions and global wallet capabilities that allow applications to seamlessly integrate digital asset functionality for users, businesses, and automated systems. - [RapidFire Wallet](/docs/overview/infrastructure): Rapidfire is the branded wallet from Openfort. It's an opensource implementation that you can integrate for free to have all the wallet capabilities. - [Openfort SDKs](/docs/overview/libraries): The recommended way to interact with the Openfort API is by using one of our official SDKs - [Openfort samples](/docs/overview/repositories): Browse the official Openfort repositories for SDKs, smart contracts, and integrations to accelerate your development. - [Postman API Suite](/docs/reference/postman): Interested in trying out Openfort's APIs via Postman? We've got you covered! Postman offers a seamless experience for testing APIs, and we've created specialized collections just for you. - [Iframe Service](/docs/configuration/advanced/iframe): The iframe service is a crucial element in ensuring the security and privacy of a user's private keys. The isolated iframe operates as a secure environment, managing the private key and executing wallet operations. This setup is pivotal because it keeps the private key confined to an in-memory state within the iframe, never storing it in a database or allowing it to persist beyond the session. This isolation also means the private key is protected from potential exposure or theft, as it's inaccessible to both the app's code and the Openfort SDK. - [Shield Service](/docs/configuration/advanced/shield): Developer Guide - [Using AI-powered IDEs with our docs](/docs/configuration/ai-tooling/llms): We've created `.txt` files that you can easily copy and paste into your large language model (LLM) of choice to give more context on how all of our Openfort APIs works and significantly improve the accuracy of your AI-generated code. - [Custom Generic Auth Token](/docs/configuration/custom-auth/auth-token): Generic authentication serves as an alternative for those utilizing their own authentication server. This method accommodates various authentication types not currently supported, such as `GitHub`, or bespoke systems. - [Custom OIDC compatible Auth](/docs/configuration/custom-auth/oidc-token): OIDC authentication setup is a viable choice when leveraging an external authentication provider such as `Auth0`, `Cognito`, etc., that offers JWK publication for token authenticity verification. - [AccelByte Auth](/docs/configuration/external-auth/accelbyte): AccelByte offers robust backend services for building and operating online games, featuring scalable cloud infrastructure, matchmaking, and cross-platform player accounts. Their solutions focus on enhancing multiplayer experiences while providing developers with the flexibility to customize game services. - [Firebase Auth](/docs/configuration/external-auth/firebase): Firebase is a development platform from Google that provides a variety of tools and services to help developers build, improve, and grow their apps, with features such as databases, analytics, messaging, and crash reporting. It emphasizes easy integration and real-time updates, enabling developers to create rich, collaborative experiences. - [LootLocker Auth](/docs/configuration/external-auth/lootlocker): LootLocker offers robust backend services for building and operating online games, featuring scalable cloud infrastructure, matchmaking, and cross-platform player accounts. Their solutions focus on enhancing multiplayer experiences while providing developers with the flexibility to customize game services. - [PlayFab Auth](/docs/configuration/external-auth/playfab): PlayFab provides a comprehensive suite of live game management services, including server hosting, data analytics, and liveOps utilities to streamline game development and monetization. It is designed to empower developers with the tools needed to engage players and drive revenue, all while minimizing overhead and time to market. - [Supabase Auth](/docs/configuration/external-auth/supabase): Supabase is an open-source alternative to Firebase. It provides a variety of tools and services to help with Postgres database, Authentication, instant APIs, Realtime, Functions, Storage and Vector embeddings. - [Custom SMTP](/docs/configuration/password/custom-smtp): How to work with passwords in Openfort Auth - [Password-based Auth](/docs/configuration/password/security): Email authentication with global wallets You only need to enable this toggle if you're developing an global wallets. - [Login with Apple](/docs/configuration/social-login/auth-apple): Openfort Auth supports using [Sign in with Apple](https://developer.apple.com/sign-in-with-apple/) on the web and in native apps for iOS, macOS, watchOS or tvOS. - [Discord Login](/docs/configuration/social-login/auth-discord): To enable Discord Auth for your project, you need to set up a Discord OAuth application and add the application credentials in the Openfort Dashboard. - [Epic Games Login](/docs/configuration/social-login/auth-epic): To enable Epic Games Auth for your project, you need to set up a Epic Games OAuth application and add the application credentials in the Openfort Dashboard. - [Facebook Login](/docs/configuration/social-login/auth-facebook): To enable Facebook Auth for your project, you need to set up a Facebook OAuth application and add the application credentials to your Openfort Dashboard. - [Google Login](/docs/configuration/social-login/auth-google): Openfort Auth supports Sign in with Google on the web, native Android applications and Chrome extensions. - [LINE Login](/docs/configuration/social-login/auth-line): Integrate LINE Login into your web app (website) to make it easier for people to create an account and log in. - [X (Twitter) Login](/docs/configuration/social-login/auth-twitter): To enable Twitter Auth for your project, you need to set up a Twitter OAuth application and add the application credentials in the Openfort Dashboard. - [Global Wallet (Ecosystem SDK)](/docs/products/cross-app-wallet): Openfort **Global wallets** integrate onboarding, authentication, payments, and recovery with no app or extension required. Projects use the [Ecosystem SDK](https://www.npmjs.com/package/@openfort/ecosystem-js), a TypeScript library, to bootstrap the global wallet. - [Quickstart - 7702 Accounts](/docs/products/embedded-wallet/7702): This repository is under active development.\ Contracts are **unaudited**, and the codebase may have **breaking changes** without notice. - [AI Tooling Quickstart](/docs/products/embedded-wallet/ai-quickstart): Get started using Openfort's AI tooling to build your app faster than ever. - [Embedded Wallet](/docs/products/embedded-wallet): Embedded wallets provide a seamless blockchain experience by abstracting away the complexity of wallet management. Users can interact with your application without needing to understand private keys, seed phrases, or blockchain concepts. - [User Session (JWT/Authorization)](/docs/products/server/access-token): When your app frontend sends a request to your server, you should include the current user's access token in the Authorization header of the request. This allows your backend to securely identify the requesting user and gate API routes based on their authentication status, their user ID, and more. - [Using Openfort from your server](/docs/products/server): Openfort's client-side SDKs, like [`@openfort/openfort-js`](https://www.npmjs.com/package/@openfort/openfort-js), allow you to securely authenticate your users, connect their wallets, and create embedded wallets for them in your application frontend. - [Provider migration](/docs/products/server/migration): Migrate users from one Auth provider to another using Openfort's migration tool - [Pregenerating an embedded wallet](/docs/products/server/pregenerate-wallets): You can pregenerate non-custodial wallet associated with a given account, like an email address or social login, without requiring the user to login. You can even send assets to the wallet before the user logs in to your app for the first time. Once the user associated with the account logs in, they will be able to access the pregenerated wallet and any assets sent to them. To pregenerate wallets, use one of the supported backend SDKs: - [Server Environment Setup](/docs/products/server/setup): This guide will help you set up your server environment to work with Openfort, including getting your API keys and configuring the necessary SDKs for backend operations. - [Prompts & Examples](/docs/configuration/ai-tooling/mcp-server/examples): Once everything is set up, you can start using your AI assistant as usual. It will now have access to the tools provided by Openfort's MCP Server and will call them when needed. - [MCP Server](/docs/configuration/ai-tooling/mcp-server/overview): Openfort’s MCP Server is a plug-and-play solution that enhances AI assistants by enabling them to create projects, manage configurations, and query data automatically when building applications on Openfort's infrastructure. - [Available Tools](/docs/configuration/ai-tooling/mcp-server/tools): Our MCP Server provides three main tool categories to enhance your coding experience: - [eth_accounts](/docs/products/cross-app-wallet/rpc/eth_accounts): Array of connected Account addresses. - [eth_requestAccounts](/docs/products/cross-app-wallet/rpc/eth_requestAccounts): Requests access to Account addresses. - [eth_sendTransaction](/docs/products/cross-app-wallet/rpc/eth_sendTransaction): Instructs the Wallet to broadcast a transaction to the network. - [eth_signTypedData_v4](/docs/products/cross-app-wallet/rpc/eth_signTypedData_v4): Signs [EIP-712](https://eips.ethereum.org/EIPS/eip-712) typed data. - [RPC Methods Overview](/docs/products/cross-app-wallet/rpc) - [personal_sign](/docs/products/cross-app-wallet/rpc/personal_sign): Signs an [EIP-191](https://eips.ethereum.org/EIPS/eip-191) personal message. - [wallet_getCallsStatus](/docs/products/cross-app-wallet/rpc/wallet_getCallsStatus): Gets the status of a call bundle sent via [`wallet_sendCalls`](/docs/products/cross-app-wallet/rpc/wallet_sendCalls). - [wallet_getCapabilities](/docs/products/cross-app-wallet/rpc/wallet_getCapabilities): Gets supported capabilities of the global wallet. - [wallet_grantPermissions](/docs/products/cross-app-wallet/rpc/wallet_grantPermissions): Grants permissions for an Application to perform actions on behalf of the account. Based on [ERC-7715](https://github.com/ethereum/ERCs/blob/23fa3603c6181849f61d219f75e8a16d6624ac60/ERCS/erc-7715.md). - [wallet_revokePermissions](/docs/products/cross-app-wallet/rpc/wallet_revokePermissions): Revokes a permission. - [wallet_sendCalls](/docs/products/cross-app-wallet/rpc/wallet_sendCalls): Requests for the Wallet to broadcast a bundle of calls to the network. - [FAQs](/docs/products/cross-app-wallet/setup/faqs): Yes, Openfort's architecture is built to allow thousands of new gaming ecosystems flourish. You ecosystem can be added as an OAuth provider allowing your community to be recognized. - [Why create a Global Wallet?](/docs/products/cross-app-wallet/setup/why): Embedded wallets typically require each application to manage its own wallet setup. - [Batch transactions](/docs/products/cross-app-wallet/usage/batch-transactions): Smart Wallet enables you to send multiple onchain calls in a single transaction, improving UX by reducing multi-step interactions to a single click. A common example is combining an ERC-20 `approve` with a swap operation. - [Build a "Create Wallet" button](/docs/products/cross-app-wallet/usage/create-wallet-button): For the best onboarding experience, we recommend adding a highly visible 'Create' or 'Create Wallet' button to your app's homepage. Adding this button streamlines the onboarding experience for new users and gets them ready to use your app in a few seconds. - [Sponsor transactions](/docs/products/cross-app-wallet/usage/gas-policies): One of the biggest UX enhancements unlocked by smart accounts is the ability for app developers to sponsor their users' transactions. If your ecosystem has a gas policy enabled, you can start sponsorship your user's transactions by using the `policy` in your [dashboard](https://dashboard.openfort.io/policies). - [Integrating with wallet connectors](/docs/products/cross-app-wallet/usage/libraries): Using a **wallet library** provides the most streamlined path to implementing a wallet UI, offering a complete solution with pre-built UI components and a polished user experience out of the box. This approach builds on top of Wagmi and includes additional UI components like the `ConnectButton`, ready-to-use themes, and built-in transaction interfaces. While it requires the most dependencies (`@rapidfire/id`, `Wagmi`, `React Query`, and `RainbowKit` -for example), it significantly reduces development time by providing a complete wallet interface solution. - [Create a React Native App](/docs/products/cross-app-wallet/usage/react-native): To make these instructions concrete, we have created a sample global wallet called **Rapidfire ID**. To interact with it, you can find its SDK in the NPM package directory: [@rapidfire/id](https://www.npmjs.com/package/@rapidfire/id). - [Signature Verification](/docs/products/cross-app-wallet/usage/signatures): Verifying signatures for smart contract wallets involves specific considerations since the smart contract itself cannot produce a signature. Instead, it provides a function: - [Unity Android](/docs/products/cross-app-wallet/usage/unity-android): To make these instructions concrete, we have created a sample global wallet called **Rapidfire ID**. To interact with it, you can find its SDK in the NPM package directory: [@rapidfire/id](https://www.npmjs.com/package/@rapidfire/id). - [Unity WebGL](/docs/products/cross-app-wallet/usage/unity-webgl): To make these instructions concrete, we have created a sample global wallet called **Rapidfire ID**. To interact with it, you can find its SDK in the NPM package directory: [@rapidfire/id](https://www.npmjs.com/package/@rapidfire/id). - [Create a game in Unity](/docs/products/cross-app-wallet/usage/unity): Caution - [Wagmi template to create a web app](/docs/products/cross-app-wallet/usage/web-app-wagmi): The following is a quick and easy implementation for getting started with [Wagmi](https://wagmi.sh/) template and the global wallet of choice. - [Authentication](/docs/products/embedded-wallet/javascript/auth): At a high-level, onboarding users onchain breaks down into three core questions: who is taking the onchain action (the user), through what means are they able to control this action (the signer) and where is the affected state (the account). - [FAQs](/docs/products/embedded-wallet/javascript/faqs): An embedded wallet is a in-app wallet designed to onboard both web2 and web3 users simultaneously. Nexus includes several core components: - [Overview Javascript](/docs/products/embedded-wallet/javascript): The [Openfort Javascript SDK](https://github.com/openfort-xyz/openfort-js) is a Javascript library client for Openfort that allows you to add secure authentication, non-custodial embedded wallets, and powerful UX infrastructure into your game. - [Quickstart](/docs/products/embedded-wallet/javascript/quickstart): **The [Openfort JS SDK](https://www.npmjs.com/package/@openfort/openfort-js) is a low level library that allows you to build custom login flows, request signatures and more.** - [JavaScript SDK Troubleshooting](/docs/products/embedded-wallet/javascript/troubleshooting): A: This issue is caused by missing Node polyfills in your bundled web application. To resolve it: - [Using the JS SDKs](/docs/products/embedded-wallet/javascript/use-openfort): There are **two** steps to configure Openfort's embedded wallets in your application: - [Understanding Wallets](/docs/products/embedded-wallet/javascript/wallets): A **private key is a signer**—a cryptographic entity capable of signing messages and transactions on behalf of a user. When this private key is created and managed within an app or game, it becomes what we call an **embedded wallet**. - [React SDK](/docs/products/embedded-wallet/react): We are excited to announce the **React SDK** for Openfort Embedded Wallet, which allows you to easily integrate Openfort's wallet solutions into your React applications. This SDK provides a simple and efficient way to manage user authentication, wallet interactions, and blockchain transactions. - [Build with React Native](/docs/products/embedded-wallet/react-native): Create or update your `metro.config.js` to include the necessary Node.js module shims: - [Overview Unity](/docs/products/embedded-wallet/unity): The [Openfort Unity SDK](https://github.com/openfort-xyz/openfort-csharp-unity) is a Unity library client for Openfort that allows you to add secure authentication, non-custodial embedded wallets, and powerful UX infrastructure into your game. - [Unity Quickstart](/docs/products/embedded-wallet/unity/quickstart): The Unity SDK requires: - [Unity SDK Troubleshooting](/docs/products/embedded-wallet/unity/troubleshooting): A: Yes, you can test the SDK using the Unity Editor for Android and iOS on both Mac and Windows. However, be aware that: - [WebGL Setup](/docs/products/embedded-wallet/unity/webgl): Openfort's Unity SDK leverages an iframe to secure the key material for a user's embedded wallet. Given the use of an iframe, we recommend testing builds with Openfort's Unity SDK in the browser, or on a non-WebGL platform in the Unity editor. - [Backend wallets](/docs/products/server/wallet): Backend wallets are externally-owned accounts that your application controls to manage on-chain operations. They act as trusted intermediaries that can handle various automated tasks and workflows in your application. - [Using backend wallets](/docs/products/server/wallet/usage): Backend wallets can be created through our dashboard or API. You can either create a new wallet or add an existing one. - [Branding - Wallet SDK](/docs/products/cross-app-wallet/setup/react/branding): When instantiating the **Client SDK**, you can pass in the `appearance` object to customize the appearance of the wallet. For wallet discovery, it will use [EIP-6963](https://eips.ethereum.org/EIPS/eip-6963) to embedded your branding. The `appearance` object has the following properties: - [Ecosystem dashboard configuration](/docs/products/cross-app-wallet/setup/react/dashboard): Creating your own global wallet is an **enterprise feature**. To enable it, please [contact us](https://t.me/joalavedra) - [Quickstart your global wallet](/docs/products/cross-app-wallet/setup/react/quickstart): Build and launch your custom global wallet - [Design and customize your wallet](/docs/products/cross-app-wallet/setup/react/wallet-ui): Openfort **global wallets** come with a default set of screens for authentication, session key confirmation, sign typed message, configuration, and transaction confirmation. These screens are designed to be customizable to fit your brand and user experience. Openfort provides helpers to the most popular frameworks to make it easier to integrate the global wallets. - [Ecosystem wallet signers](/docs/products/cross-app-wallet/setup/signers): The Ecosystem SDK is agnostic to the key management solution you choose to use. - [Using Openfort signer](/docs/products/cross-app-wallet/setup/signers/openfort): If you want to check out a live sample app using Openfort signers, check out the [live demo with RapidFire](https://rapidfire.sample.openfort.io/). - [Passkey (Webauthn) signer](/docs/products/cross-app-wallet/setup/signers/passkey): If you want to check out a live sample app using Passkey signers, check out the [live demo with RapidSafe](https://rapidsafe.sample.openfort.io/). - [Third-party auth providers](/docs/products/embedded-wallet/javascript/auth/external-auth): Openfort's embedded wallets are fully-compatible with any authentication provider that supports JWT-based, stateless authentication. - [External Wallet Login](/docs/products/embedded-wallet/javascript/auth/external-wallet): Connect wallet via the [Sign in With Ethereum (SIWE)](https://eips.ethereum.org/EIPS/eip-4361) standard. Catered to users who prefer to authenticate using their external wallets, supporting various types such as injected, browser-based, and mobile wallets. Openfort’s integration facilitates a secure and direct authentication process using these wallets. - [Guest Users](/docs/products/embedded-wallet/javascript/auth/guest): Guest accounts allow users to immediately start using your application without going through a full registration process. This feature is particularly useful for applications where you want to reduce friction in the user onboarding process. - [Social Login (OAuth)](/docs/products/embedded-wallet/javascript/auth/oauth-login): To initiate sign in, you can use the `initOAuth()` method from the Openfort JavaScript library and provide a `redirectTo` URL which points to a callback route. - [Email and Password](/docs/products/embedded-wallet/javascript/auth/password): Users often expect to sign in to your site with a password. Openfort Auth helps you implement password-based auth safely, using secure configuration options and best practices for storing and verifying passwords. - [User Management](/docs/products/embedded-wallet/javascript/auth/user-management): Use the Auth Players page of the dashboard to manage all of your app's users and their linked accounts. - [User Session (JWT/Authorization)](/docs/products/embedded-wallet/javascript/auth/user-sessions): A session is created when a user signs in. By default, it lasts 1 hour and a user can have an unlimited number of active sessions. - [Export Private Key](/docs/products/embedded-wallet/javascript/signer/export-key): This allows them to use their embedded wallets address with another wallet client, such as Metamask in any application. Note that this embedded wallet is only controlling the smart account and does not hold assets in it. If you want to simply transfer ownership to a Metamask and interact with a smart contract, we'll recommend checking the [transfer ownership section](/docs/products/embedded-wallet/javascript/smart-wallet/advanced/transfer-ownership). - [Wallet Creation and Recovery](/docs/products/embedded-wallet/javascript/signer/recovery): To create wallets for your users as part of the login flow you need to set the `configureEmbeddedSigner`. The configure parameter depends on the type of recovery you want to enable in your app. Therefore, it's important to first decide the recovery method of the signer. - [Update Recovery Method](/docs/products/embedded-wallet/javascript/signer/update-recovery): Once a wallet has been created, users have the ability to upgrade from automatic recovery to a user-owned recovery method, or to switch between different user-owned recovery methods. - [Funding Wallets](/docs/products/embedded-wallet/javascript/smart-wallet/funding): **Openfort makes it easy for your users to fund their wallets with a variety of assets**, including a network's native currency (e.g. ETH), USDC, and other ERC20 tokens. This makes it seamless to take onchain actions within your apps such as purchasing goods, swapping tokens, minting NFTs, and more. - [Handling Networks](/docs/products/embedded-wallet/javascript/smart-wallet/handling-networks): The following guide will show you how to handle networks with Openfort's smart wallets using the EIP-1193 provider. - [Using Smart Wallets](/docs/products/embedded-wallet/javascript/smart-wallet): Smart wallets in Openfort are your primary interface for blockchain interactions. Once an embedded wallet is set up, a smart wallet is automatically created and associated for your user. - [Integrating with Web3 Libraries](/docs/products/embedded-wallet/javascript/smart-wallet/libraries): Openfort's `wallet` object is fully compatible with popular web3 libraries for interfacing wallets, including [ethers](#ethers), [viem](#viem), and [wagmi](#wagmi). - [Using Smart Wallets](/docs/products/embedded-wallet/javascript/smart-wallet/send): To request signatures or transactions from a connected wallet, you can either: - [Create React App with Openfort Kit](/docs/products/embedded-wallet/react/kit/create-react-app): Get started with authentication UI elements and a wallet connector - [Openfort React SDK](/docs/products/embedded-wallet/react/kit): **With Openfort Kit, your app can authenticate users across web2 and web3 accounts, including:** - [Wallets in Kit React](/docs/products/embedded-wallet/react/kit/wallets): For a comprehensive overview of embedded wallets, wallet types, and core concepts, see the [Understanding Wallets guide](/docs/products/embedded-wallet/javascript/wallets). - [Native Login With Apple](/docs/products/embedded-wallet/react-native/auth/auth-apple): When working with Expo, you can use the [Expo AppleAuthentication](https://docs.expo.dev/versions/latest/sdk/apple-authentication/) library to obtain an ID token that you can pass to openfort-js [`authenticateThirdParty` method](#TODO). - [Native Login With Google](/docs/products/embedded-wallet/react-native/auth/auth-google): Unlike the OAuth flow which requires the use of a web browser, the native Sign in with Google flow on Android uses the [operating system's built-in functionalities](https://developers.google.com/android/reference/com/google/android/gms/auth/api/identity/package-summary) to prompt the user for consent. Note that native sign-in has been rebranded as *One Tap sign-in on Android* by Google, which you should not confuse with *One Tap sign in for web*, as mentioned below. - [Email and Password](/docs/products/embedded-wallet/unity/auth/email): Allow users to sign in with a password connected to their email address in your Unity game. - [External Wallet Authentication](/docs/products/embedded-wallet/unity/auth/external-wallet): Connect wallets via the [Sign in With Ethereum (SIWE)](https://eips.ethereum.org/EIPS/eip-4361) standard. This authentication method is designed for users who prefer to authenticate using their external wallets. Openfort's Unity integration facilitates a secure and direct authentication process using these wallets. - [Guest Mode](/docs/products/embedded-wallet/unity/auth/guest): User data and embedded wallets from guest sessions cannot be merged into an existing user account — guest accounts can only be upgraded into a new user account. If a guest user wants to log in with an existing account, you must delete the guest user session first. - [Social Login (OAuth)](/docs/products/embedded-wallet/unity/auth/oauth): Create a script with the following code and bind it to an object. - [Third-party authentication](/docs/products/embedded-wallet/unity/auth/third-party): Openfort's embedded signers are fully compatible with any authentication provider that supports JWT-based, stateless authentication. This guide will show you how to integrate third-party authentication providers in your Unity game. - [User Session Management](/docs/products/embedded-wallet/unity/auth/user-sessions): Here's a complete example of managing sessions in Unity: - [Setup game ads to sponsor gas fees](/docs/products/embedded-wallet/unity/resources/ads-unity): This sample project showcases the Openfort integration with [Unity LevelPlay](https://docs.unity.com/monetization-dashboard/en-us/manual/UnityLevelPlay). - [Integrate Android In-App Purchases (IAP) in Unity](/docs/products/embedded-wallet/unity/resources/android-iap-unity): This sample project showcases the Openfort integration with Android [In-App Purchasing](https://docs.unity3d.com/Packages/com.unity.purchasing@4.10/manual/Overview.html) in Unity. - [Mobile In-App Purchases (IAP) in Unity](/docs/products/embedded-wallet/unity/resources/apple-iap-unity): *Disclaimer: Openfort is not responible of such integration to be approved by Apple and/or Google* - [Add reCAPTCHA in your Unity game](/docs/products/embedded-wallet/unity/resources/captcha-unity): This is a sample project to showcase the Openfort integration with [Google reCAPTCHA V3](https://developers.google.com/recaptcha/docs/v3), a system to help you protect your sites from fraudulent activities, spam, and abuse. In this sample, we will activate reCAPTCHA verification every time the user tries to perform a key action like authenticating or minting an NFT. - [Use token bound accounts (ERC6551)](/docs/products/embedded-wallet/unity/resources/token-bound-accounts): In this guide you'll find how to implement a token bound account based on a game character. This guide implements the backend code necessary to use token bound accounts in your game. It uses the [Openfort Node SDK](https://www.npmjs.com/package/@openfort/openfort-node). Architecture of the solution proposed in this guide: - [Create and recover wallets in Unity](/docs/products/embedded-wallet/unity/signer/recovery): To create wallets for your users during the login flow, you need to configure the private key generation. The configuration depends on your chosen recovery method, so it's important to decide on your recovery strategy first. - [Sign messages](/docs/products/embedded-wallet/unity/signer/sign-messages): Before implementing message signing: - [Manage embedded wallet state](/docs/products/embedded-wallet/unity/signer/state): There are **two** essential steps to configure Openfort's embedded wallets in your Unity application: - [Using smart wallets](/docs/products/embedded-wallet/unity/smart-wallet): Smart wallets in Openfort are your primary interface for blockchain interactions. Once an embedded wallet is set up, a smart wallet is automatically created and associated for your user. - [Using Smart Wallets](/docs/products/embedded-wallet/unity/smart-wallet/send): To use smart wallets, you could use the EIP1193 provider or use a backend. This guide teaches how to make different requests to the smart wallet with the backend and Unity (it's easier to do so in the context of gaming because no need to encode transactions with Unity). - [Backend wallet with Rest API](/docs/products/server/wallet/quickstarts/api): You can also request Openfort's REST API directly to use backend wallets. When requesting the REST API directly, you must set certain headers on your requests. - [Backend wallet with SDK (Node.js)](/docs/products/server/wallet/quickstarts/sdk): You can use backend wallets via Openfort's NodeJS Server SDK (or .net). Follow the instructions below to configure your desired integration. - [Linking & unlinking accounts](/docs/products/embedded-wallet/javascript/auth/user-management/linking): The user identity represents an authentication method associated to the user. For example, if a user signs in using their email, an email identity will be associated with the user. - [Using Session Keys](/docs/products/embedded-wallet/javascript/smart-wallet/advanced/session-keys): Session keys are programmable access tokens with specific permissions, designed for controlled interactions. Examples include: - [Sign Messages with Custodial Wallets](/docs/products/embedded-wallet/javascript/smart-wallet/advanced/sign-custodial): This guide is for custodial smart accounts. If you are using non-custodial smart accounts, you should use the `Sign Messages`. - [Social Recovery](/docs/products/embedded-wallet/javascript/smart-wallet/advanced/social-recovery): One of the main hurdles in enhancing gaming experiences within Web3 environments is ensuring player account security. Unlike traditional gaming accounts, where password recovery is straightforward, Web3 accounts often require meticulous management of a seed phrase to prevent loss of access. This can be a daunting task for players, necessitating either a fail-safe method to secure the seed phrase or reliance on a centralized system to handle key management. - [Transfer Account Ownership](/docs/products/embedded-wallet/javascript/smart-wallet/advanced/transfer-ownership): With Openfort, you can change the ownership of an account from one address to another. Your players can take ownership of their account without ever having to go through exposing a private key. Secure, frictionless, and easy. - [Relay.link Integration](/docs/products/embedded-wallet/javascript/smart-wallet/guides/bridge): The sample allows you to convert any tokens, using [Relay.link](https://relay.link/). Bridging rates are determined via the bridge provider, and depend on supply and demand of the respective tokens. - [Uniswap V3 Integration](/docs/products/embedded-wallet/javascript/smart-wallet/guides/exchange): The API allows you to convert any tokens, using [Uniswap V3](https://docs.uniswap.org/sdk/v3/overview). Conversion rates are determined via an Automated Market Maker mechanism, and depend on supply and demand of the respective tokens. - [Hooks](/docs/products/embedded-wallet/react/kit/hooks): The `useStatus` hook provides the current status of the Openfort SDK. The status can be one of the following: - [Openfort Kit Button](/docs/products/embedded-wallet/react/kit/setup/button): To use the Openfort Kit Button, you will need to use the `OpenfortKitButton` component. This component will render a button that will open the Openfort login screen when clicked. - [Customize the UI](/docs/products/embedded-wallet/react/kit/setup/custom-ui): Content for Openfort Kit theming is coming soon. - [Configuration](/docs/products/embedded-wallet/react/kit/setup): In this guide, we will show you how to use the Openfort Kit configuration to customize the look and feel of the Openfort login screen, configure your signer and more. - [OpenfortKitProvider Configuration](/docs/products/embedded-wallet/react/kit/setup/provider): Openfort Kit Provider is the main component that you will use to wrap your application. It will provide the context to all the components that need to interact with the Openfort Kit. - [Wagmi configuration](/docs/products/embedded-wallet/react/kit/setup/wagmi): Openfort Kit uses [wagmi](https://wagmi.sh/) internally and therefore it's possible to use hooks from wagmi to fetch data such as info about the connected account. - [Integrate Firebase with Openfort in Unity](/docs/products/embedded-wallet/unity/resources/backend/firebase-extension): [Firebase](https://firebase.google.com/) is Google's all-encompassing app development platform, providing game developers with an array of backend tools powered by Google Cloud. - [Integrate PlayFab in Unity](/docs/products/embedded-wallet/unity/resources/backend/playfab): [PlayFab](https://playfab.com/) is a backend service provided by Microsoft for game developers, offering tools for live game management, all powered by Azure's cloud infrastructure. - [Integrate Unity Gaming Services (UGS) in Unity](/docs/products/embedded-wallet/unity/resources/backend/unity-gaming-services): This is a sample project to showcase the Openfort integration with [Unity Gaming Services](https://unity.com/solutions/gaming-services), a complete service ecosystem for Unity live games. - [Using session keys in Unity](/docs/products/embedded-wallet/unity/smart-wallet/advanced/session-keys): In-game keys are specialized access tools assigned with specific in-game permissions, tailored for enhancing gaming experiences. Examples include: