5.5 KiB
5.5 KiB
Discord Activity Setup Guide
This guide explains how to set up and deploy the AeThex platform as a Discord Activity.
Overview
AeThex can now be embedded as a Discord Activity, allowing users to access the full platform directly within Discord. The integration uses:
- Discord SDK for Activity context detection and user authentication
- Discord OAuth 2.0 for secure user verification
- React Context for managing Discord user state
Prerequisites
- Discord Application ID:
578971245454950421 - Discord Client Secret (from Discord Developer Portal)
- Deployed Application URL (for OAuth redirect URI)
Configuration Steps
1. Discord Developer Portal Setup
- Go to Discord Developer Portal
- Open your application (ID:
578971245454950421) - Navigate to OAuth2 > General
- Copy your Client Secret and save it securely
- Add Redirect URIs:
https://your-domain.com/discord/callback(for standard OAuth)https://your-domain.com(for Activity context)
2. Environment Variables
Set these environment variables in your deployment:
For Netlify/Vercel:
VITE_DISCORD_CLIENT_ID=578971245454950421
DISCORD_CLIENT_SECRET=your-client-secret-here
DISCORD_REDIRECT_URI=https://your-domain.com/discord/callback
For Local Development:
# .env or via DevServerControl
VITE_DISCORD_CLIENT_ID=578971245454950421
DISCORD_CLIENT_SECRET=your-client-secret-here
PUBLIC_BASE_URL=http://localhost:5173
3. Activity Configuration in Discord
In the Discord Developer Portal for your application:
- Go to App Details
- Look for "Activities" or "Embedded App Sub-Command"
- Set the Activity URL to your deployment URL:
https://your-domain.com/discord
- Enable "Requires OAuth2 Code Grant"
4. Deploy the Application
The application is now ready to be deployed. All changes include:
- Discord Context Provider (
code/client/contexts/DiscordContext.tsx) - Discord Activity Page (
code/client/pages/DiscordActivity.tsx) - OAuth Callback Handler (
code/client/pages/DiscordOAuthCallback.tsx) - API Endpoint (
/api/discord/oauth/callback) - Discord SDK Integration (in
index.html)
How It Works
Activity Flow
- User launches Activity: User opens the Discord Activity in a Discord server
- SDK Initialization:
DiscordContextattempts to load and initialize Discord SDK - User Detection: If in Discord Activity context, user info is retrieved from Discord
- Authentication:
- If in Discord Activity: User is automatically identified via Discord
- If standard OAuth: User is redirected to Discord OAuth flow
- App Access: User gains full access to AeThex platform with Discord credentials
Routes
/discord- Main Discord Activity page/discord/callback- OAuth callback handler (redirects to dashboard)/api/discord/oauth/callback- Backend OAuth token exchange
Usage
For Users
Users can access AeThex as a Discord Activity by:
- Going to their Discord server
- Clicking on "Activities" (rocket icon)
- Searching for or selecting "AeThex"
- Activity launches in the Discord client
For Developers
To integrate Discord authentication in components:
import { useDiscord } from '@/contexts/DiscordContext';
export function MyComponent() {
const { isDiscordActivity, discordUser, initiateDiscordOAuth } = useDiscord();
return (
<div>
{isDiscordActivity ? (
<p>Running as Discord Activity for {discordUser?.username}</p>
) : (
<button onClick={initiateDiscordOAuth}>
Connect with Discord
</button>
)}
</div>
);
}
Troubleshooting
SDK Not Loading
If Discord SDK doesn't load:
- Check that you're running the Activity in Discord (not a web browser)
- Verify the Activity URL is correctly configured in Discord Developer Portal
- Check browser console for SDK loading errors
OAuth Failures
If OAuth fails:
- Verify
DISCORD_CLIENT_SECRETis set correctly - Confirm redirect URI matches Discord Developer Portal settings
- Check server logs for token exchange errors
User Not Detected
If Discord user info isn't available:
- The Activity might not have proper permissions
- User might not be authenticated with Discord
- Check Discord SDK
ready()promise resolved successfully
Security Considerations
- Client Secret: Keep
DISCORD_CLIENT_SECRETsecure (never expose in frontend) - OAuth State: Discord SDK handles state validation automatically
- Redirect URI: Only whitelist your official domain
- Token Storage: OAuth tokens are stored securely in
localStorage - CORS: Discord Activities run in isolated context; standard CORS doesn't apply
API Documentation
POST /api/discord/oauth/callback
Exchanges Discord authorization code for access token.
Request:
{
"code": "authorization_code",
"state": "optional_state_value"
}
Response:
{
"ok": true,
"access_token": "token",
"discord_user": {
"id": "user_id",
"username": "username",
"avatar": "avatar_url",
"email": "user@example.com"
}
}
Next Steps
- Obtain Discord Client Secret from Developer Portal
- Set environment variables in your deployment platform
- Deploy the application
- Test the Activity in a Discord server
- Monitor logs for any issues
Support
For issues or questions:
- Check Discord Developer Portal documentation: https://discord.dev
- Review error logs in server console
- Contact support@aethex.tech