⚠️ Beta Software Notice
This package is currently in testing phase. While it has been tested and is functional, you may encounter bugs or unexpected behavior. Please report any issues to help improve the package.
The easiest way to add FACEIT OAuth2 authentication to any web application.
Inspired by the simplicity of getting a visa - just the essentials you need to authenticate with FACEIT.
- 🚀 One-Command Setup - Auto-generates complete integration
- 🔒 Secure by Default - PKCE OAuth2 flow with security best practices
- 🌐 Works Everywhere - Next.js, PHP, Vanilla HTML/CSS/JS
- 🤖 Smart Detection - Automatically detects your project type
- 🎯 TypeScript Ready - Full type safety included
- 📦 Zero Config - Just add your FACEIT credentials
npm install faceit-visaThat's it! We'll detect your project type and generate everything you need.
Choose your framework:
# Next.js App Router (TypeScript + HTTPS)
npx faceit-visa generate nextjs-app-router
# Vanilla HTML/CSS/JS (Universal)
npx faceit-visa generate vanilla
# Pure PHP (Zero dependencies)
npx faceit-visa generate phpsrc/app/api/auth/
├── faceit/route.ts # OAuth initiation
├── callback/faceit/route.ts # OAuth callback
├── user/route.ts # Get current user
└── logout/route.ts # Logout endpoint
src/components/
└── Navbar.tsx # Ready-to-use auth navbar
.env.example # Environment template
├── index.html # Main page with auth
├── faceit-auth.js # Authentication logic
├── server.js # Express.js backend
├── styles.css # Responsive styling
├── package.json # Dependencies
└── .env.example # Environment template
├── index.php # Homepage
├── login.php # OAuth initiation
├── callback.php # OAuth callback
├── logout.php # Logout
├── profile.php # User profile page
├── FaceitAuth.php # OAuth class
├── config.php # Configuration
├── styles.css # Styling
└── .env.example # Environment template
After running npx faceit-visa generate nextjs-app-router:
1. Add credentials to .env.local:
FACEIT_CLIENT_ID=your_client_id_here
FACEIT_CLIENT_SECRET=your_client_secret_here
NEXTAUTH_URL=https://localhost:30002. Use the generated navbar:
// app/layout.tsx
import Navbar from '@/components/Navbar'
export default function Layout({ children }) {
return (
<html>
<body>
<Navbar />
{children}
</body>
</html>
)
}3. Start with HTTPS:
npm run dev -- --experimental-https4. Set FACEIT redirect URI:
https://localhost:3000/api/auth/callback/faceit
After running npx faceit-visa generate php:
1. Add credentials to .env:
FACEIT_CLIENT_ID=your_client_id_here
FACEIT_CLIENT_SECRET=your_client_secret_here
BASE_URL=http://localhost:80002. Start PHP server:
php -S localhost:80003. Set FACEIT redirect URI:
http://localhost:8000/callback.php
After running npx faceit-visa generate vanilla:
1. Install dependencies:
npm install2. Add credentials to .env:
FACEIT_CLIENT_ID=your_client_id_here
FACEIT_CLIENT_SECRET=your_client_secret_here
BASE_URL=http://localhost:30003. Start server:
npm startFor custom implementations:
import { FaceitVisa } from 'faceit-visa'
const visa = new FaceitVisa({
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
redirectUri: 'https://yourapp.com/callback'
})
// Generate auth URL
const { url, codeVerifier } = visa.getAuthUrl()
// Exchange code for token
const token = await visa.exchangeCode(code, codeVerifier)
// Get user profile
const user = await visa.getUserProfile(token.access_token)- Go to FACEIT Developer Portal
- Create a new application
- Set your redirect URI based on your template:
- Next.js:
https://localhost:3000/api/auth/callback/faceit - PHP:
http://localhost:8000/callback.php - Vanilla:
http://localhost:3000/api/auth/callback/faceit
- Next.js:
- Copy Client ID and Client Secret to your
.envfile
# Generate templates
npx faceit-visa generate nextjs-app-router
npx faceit-visa generate vanilla
npx faceit-visa generate php
# List available templates
npx faceit-visa list
# Get help
npx faceit-visa help- PKCE Flow: Proof Key for Code Exchange for maximum security
- State Parameter: CSRF protection during OAuth flow
- Secure Cookies: httpOnly, secure, SameSite settings
- Input Sanitization: All user inputs properly validated
- Token Storage: Secure server-side session management
- Click "Login with FACEIT" → Redirect to FACEIT OAuth
- User authorizes → FACEIT redirects back with code
- Exchange code for token → Get access token securely
- Fetch user profile → Display user info and gaming stats
- Session management → Maintain login state
interface FaceitUser {
user_id: string
player_id: string
nickname: string
avatar: string
country: string
level?: number
}
class FaceitVisa {
getAuthUrl(): { url: string, codeVerifier: string }
exchangeCode(code: string, codeVerifier: string): Promise<TokenResponse>
getUserProfile(accessToken: string): Promise<FaceitUser>
}| Issue | Solution |
|---|---|
404 on callback |
Check redirect URI matches exactly |
HTTPS required |
Use --experimental-https for Next.js dev |
Missing credentials |
Verify .env file has correct values |
CORS errors |
Ensure same origin for frontend/backend |
- Next.js: Node.js 18+, Next.js 13+
- PHP: PHP 7.4+, cURL extension
- Vanilla: Node.js 16+, Express.js
Contributions welcome! Please check the issues page.
MIT License - see LICENSE file for details.
- 📖 Documentation: This README
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
Made with ❤️ for the gaming community
