Social Login Authentication
Social login authentication allows users to authenticate using OAuth providers like Google, Facebook, or custom providers through Auth0. There are two authentication flows available:
- Redirect flow: Redirects the user to the provider's login page and back to your application
- Popup flow: Opens the provider's login page in a popup window without leaving your application
Prerequisites
Before implementing social login in your application, you need to configure your Account Kit dashboard and application:
-
Follow the Setup Instructions in the Getting Started Guide:
- See the Getting Started with Authentication page for complete setup instructions
- Pay special attention to the social authentication provider configuration and whitelisted origins setup
-
Key Configuration Requirements:
- Enable desired social providers in your Account Kit dashboard
- Add your application's domain to the whitelisted origins
- Set
enablePopupOauth: true
in your config if using popup flow
Implementation Options
You can implement Social Login authentication in two ways:
- Pre-built UI Components - Quick implementation with minimal code
- Custom UI - Complete control over the user experience
Pre-built UI Components
Account Kit provides pre-built UI components that handle the entire Social Login authentication flow with minimal code.
Step 1: Add Authentication Components to Your Page
Before configuring your authentication, first add one of the pre-built components to your application:
Using Modal Authentication
To add authentication in a modal popup:
import React from "react";
import { useAuthModal } from "@account-kit/react";
export default function MyPage() {
const { openAuthModal } = useAuthModal();
return <button onClick={openAuthModal}>Sign in</button>;
}
For more details on modal configuration, see the Modal Authentication documentation.
Or:
Using Embedded Authentication
To embed authentication directly in your page:
import React from "react";
import { AuthCard } from "@account-kit/react";
export default function MyLoginPage() {
return (
<div className="flex flex-row p-4 bg-white border border-gray-200 rounded-lg">
<AuthCard />
</div>
);
}
For more details on embedded authentication, see the Embedded Authentication documentation.
Step 2: Configure Social Login in UI Components
After adding the components, configure the Social Login authentication in your application config:
import { AlchemyAccountsUIConfig, createConfig } from "@account-kit/react";
import { sepolia, alchemy } from "@account-kit/infra";
const uiConfig: AlchemyAccountsUIConfig = {
auth: {
sections: [
[
// Include social login providers
{ type: "social", authProviderId: "google", mode: "popup" },
{ type: "social", authProviderId: "facebook", mode: "popup" },
{ type: "social", authProviderId: "apple", mode: "popup" },
],
],
},
};
export const config = createConfig(
{
transport: alchemy({ apiKey: "your-api-key" }),
chain: sepolia,
// Required for popup flow
enablePopupOauth: true,
},
uiConfig
);
Standard social login providers accept the following configuration:
type SocialAuthType = {
type: "social";
// For standard providers (google, facebook, apple)
authProviderId: "google" | "facebook" | "apple";
// Authentication mode (popup or redirect)
mode: "popup" | "redirect";
// Optional: Specifies the requested OAuth scope
scope?: string;
// Optional: Specifies additional claims to be included in the authentication token
claims?: string;
};
You can find the full type definition in the Account Kit source code.
For more details on UI component customization, see the UI Components documentation.
Custom UI
If you need complete control over the user experience, you can implement your own custom UI for Social Login authentication using Account Kit hooks.
Step 1: Configure Your Application
Before implementing social login, make sure you've:
- Set up your authentication providers in the Account Kit dashboard
- If using popup flow, set
enablePopupOauth: true
in your Account Kit configuration
Step 2: Implement the Authentication
Create buttons or UI elements for each social provider you want to support:
import { useAuthenticate } from "@account-kit/react";
// Inside your component
const { authenticate, isPending } = useAuthenticate();
// For redirect flow
const handleGoogleRedirectLogin = () => {
authenticate(
{
type: "oauth",
authProviderId: "google",
mode: "redirect",
redirectUrl: "/", // Redirect to this page after authentication
},
{
onError: (error) => {
// Handle error
// The page will redirect on success, so no need for onSuccess handler
},
}
);
};
// For popup flow
const handleGooglePopupLogin = () => {
authenticate(
{
type: "oauth",
authProviderId: "google",
mode: "popup",
},
{
onSuccess: () => {
// Authentication successful!
},
onError: (error) => {
// Handle error
},
}
);
};
Step 3: Track Authentication Status
Use the useSignerStatus
hook to determine if the user is authenticated:
import { useSignerStatus } from "@account-kit/react";
// Inside your component
const { isConnected } = useSignerStatus();
// You can use isConnected to conditionally render UI
Step 4: Handle Redirect (for redirect flow)
If you're using the redirect flow, you need to handle the redirect when the user returns to your application:
import { useEffect } from "react";
import { useSignerStatus } from "@account-kit/react";
// Inside your component
const { isAuthenticating } = useSignerStatus();
// Show loading state during authentication
useEffect(() => {
if (isAuthenticating) {
// Show loading UI while authentication completes
}
}, [isAuthenticating]);
Next Steps
Enabling Authenticator App (TOTP) MFA
If you want to require a second factor for Social Login, see Social Login with Multi-Factor Authentication. Once users have set up a TOTP-based authenticator app, they'll be prompted for their 6-digit code automatically.