A modern, lightweight React component library for implementing OAuth2 social login buttons (Google, Facebook) with TypeScript support. Zero dependencies, fully customizable, and built with security in mind.
- π Modern React 18+ and TypeScript support
- π¨ Customizable button designs following provider guidelines
- π Secure OAuth2 implementation
- π¦ Tiny bundle size (~5KB minified + gzipped)
- π Support for multiple providers (Google, Facebook)
- π« Built-in loading and error states
- β‘ Zero external dependencies
- π₯ Popup-based authentication flow
- π± Mobile-responsive design
# npm
npm install react-oauth2
# yarn
yarn add react-oauth2
# pnpm
pnpm add react-oauth2
import { FacebookOauth2, GoogleOauth2 } from 'react-oauth2';
function App() {
const handleCallback = (error: Error, response: OAuthResponse) => {
if (error) {
// Handle error
return;
}
const {profile} = response;
// Handle successful login
};
return (
<div>
<GoogleOauth2
clientId="your-google-client-id"
clientSecret="your-google-client-secret"
redirectUri="http://localhost:3000/auth/google/callback"
scope={['openid', 'email', 'profile']}
callback={handleCallback}
>
Continue with Google
</GoogleOauth2>
<FacebookOauth2
clientId="your-facebook-client-id"
clientSecret="your-facebook-client-secret"
redirectUri="http://localhost:3000/auth/facebook/callback"
scope="email,public_profile"
callback={handleCallback}
>
Continue with Facebook
</FacebookOauth2>
</div>
);
}
- Go to the Google Cloud Console
- Create a new project or select an existing one
- Navigate to APIs & Services > Credentials
- Click "Create Credentials" > "OAuth 2.0 Client ID"
- Configure your OAuth consent screen
- Add authorized redirect URIs
- Copy your Client ID and Client Secret
- Go to Facebook Developers
- Create a new app or select an existing one
- Add the Facebook Login product
- Configure OAuth settings
- Add your redirect URI
- Copy your App ID and App Secret
Prop | Type | Required | Description |
---|---|---|---|
clientId | string | Yes | Your Google OAuth 2.0 client ID |
clientSecret | string | Yes | Your Google OAuth 2.0 client secret |
redirectUri | string | Yes | The URI to redirect to after authentication |
scope | string[] | No | Array of permission scopes |
callback | (error: Error, response: OAuthResponse) => void | Yes | callback |
className | string | No | Custom CSS class |
style | CSSProperties | No | Custom styles |
children | ReactNode | Yes | Button content |
Prop | Type | Required | Description |
---|---|---|---|
clientId | string | Yes | Your Facebook App ID |
clientSecret | string | Yes | Your Facebook App Secret |
redirectUri | string | Yes | The URI to redirect to after authentication |
scope | string | No | Comma-separated permission scopes |
callback | (error: Error, response: OAuthResponse) => void | Yes | callback |
className | string | No | Custom CSS class |
style | CSSProperties | No | Custom styles |
children | ReactNode | Yes | Button content |
<GoogleButton
className="custom-google-button"
style={{
backgroundColor: '#4285f4',
color: 'white',
padding: '12px 24px',
borderRadius: '4px',
}}
>
<GoogleIcon className="custom-icon" />
Sign in with Google
</GoogleButton>
// .env
REACT_APP_GOOGLE_CLIENT_ID=your-google-client-id
REACT_APP_GOOGLE_CLIENT_SECRET=your-google-client-secret
REACT_APP_FACEBOOK_CLIENT_ID=your-facebook-client-id
REACT_APP_FACEBOOK_CLIENT_SECRET=your-facebook-client-secret
import type {OAuthResponse, OAuthError} from 'react-oauth2';
const handleCallback = (error: Error, response: OAuthResponse) => {
if (error) {
// Handle error
return;
}
const {profile} = response;
// Handle successful login
};
The full source code for this package is available on GitHub.
- Never expose your client secrets in client-side code
- Use environment variables for sensitive data
- Implement proper CSRF protection
- Validate OAuth responses on your backend
- Use HTTPS for all OAuth endpoints
- Regularly rotate your client secrets
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- iOS Safari (latest)
- Android Chrome (latest)
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT Β© maxifjaved
react, oauth, oauth2, social-login, google-login, facebook-login, react-component, typescript, authentication, social-authentication, google-oauth, facebook-oauth, react18, social-media-login, oauth2-client, react-oauth, social-signin, google-signin, facebook-signin, react-social-login
Made with β€οΈ by @maxifjaved