aethex-forge/docs/DISCORD-ACTIVITY-TROUBLESHOOTING.md
2025-11-09 04:06:24 +00:00

240 lines
7.5 KiB
Markdown

# Discord Activity Troubleshooting Guide
## Error: 403 Forbidden on Directory API + X-Frame-Options Error
### Symptoms
- Discord Activity shows blank screen
- Browser console shows: `GET https://discord.com/api/v9/application-directory-static/applications/578971245454950421?locale=en-US 403 (Forbidden)`
- Browser console shows: `Refused to display 'https://578971245454950421.discordsays.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'`
### Root Causes
1. **Activities feature not enabled** in Discord Developer Portal
2. **Activity URL not configured** in Discord Developer Portal
3. **Interactions Endpoint URL not set** or not responding correctly
4. **Missing OAuth2 configuration** for Activity scopes
---
## Solution: Step-by-Step Configuration
### Step 1: Enable Activities Feature
1. Go to **[Discord Developer Portal](https://discord.com/developers/applications)**
2. Click on your app: **AeThex** (ID: `578971245454950421`)
3. Navigate to **General Information** tab
4. Scroll to **Activity Settings** section
5. Look for "Enable Activities" button/toggle
- If you see it, click to enable
- If Activities is already enabled, proceed to Step 2
### Step 2: Configure Activity URL
1. In **Activity Settings**, you should now see:
- **Activity URL** field
- Set it to: `https://aethex.dev/activity`
2. **Interactions Endpoint URL**:
- Set to: `https://aethex.dev/api/discord/interactions`
3. **Instance URL** (if present):
- Set to: `https://aethex.dev`
4. Click **Save**
5. **Wait 1-2 minutes** for Discord to process the configuration
### Step 3: Verify Interactions Endpoint
Discord will test your Interactions Endpoint by sending a PING request.
**Expected behavior:**
- You should see a green checkmark next to the Interactions Endpoint URL
- If it fails, check:
1. Is `https://aethex.dev/api/discord/interactions` responding?
2. Is `DISCORD_PUBLIC_KEY` set in your environment?
3. Run this to test: `curl -X POST https://aethex.dev/api/discord/interactions -H "Content-Type: application/json" -d '{}'`
### Step 4: Check OAuth2 Settings
1. Go to **OAuth2****General**
2. Verify **Client ID**: `578971245454950421`
3. Ensure **Client Secret** is populated
4. Go to **OAuth2****Scopes**
5. Check that at least these scopes are selected:
-`identify`
-`guilds`
### Step 5: Test the Activity
1. Add your bot to a test Discord server:
- Go to **OAuth2****URL Generator**
- Select scopes: `bot`, `applications.commands`
- Copy the generated URL and open it in browser
2. In Discord, right-click your bot and select "Apps" → "AeThex Activity"
3. The Activity should open in a modal
4. Check browser console for any errors (press `F12`)
---
## Debugging Checklist
### Server-Side Checks
#### 1. Verify Interactions Endpoint is Responding
```bash
# Test if endpoint is reachable
curl -v https://aethex.dev/api/discord/interactions
# Should return 401 (because we're not sending a valid Discord signature)
# If it returns 403 or 404, there's a routing issue
```
#### 2. Check DISCORD_PUBLIC_KEY is Set
```bash
# On your server/hosting platform, verify:
echo $DISCORD_PUBLIC_KEY
# Should output a 64-character hex string
```
#### 3. Check X-Frame-Options Headers
```bash
# Verify the server is allowing iframe embedding
curl -I https://aethex.dev/api/discord/interactions
# Look for: X-Frame-Options: ALLOWALL
# Should NOT be: X-Frame-Options: SAMEORIGIN
```
### Client-Side Checks
#### 1. Open Browser Console (F12)
- Look for `[Discord Activity]` log messages
- They should show:
- `Initialization starting...`
- `Creating SDK with clientId: 578971245454950421`
- `SDK is ready`
- Either `Current user: exists` or `Authorizing user...`
#### 2. Check frame_id Parameter
- When inside Discord Activity, the URL should contain `?frame_id=...`
- If no `frame_id`, Discord hasn't launched the Activity properly
- This usually means the Activity URL is misconfigured
#### 3. Check Discord SDK Loading
- The Discord SDK should load from: `https://cdn.discordapp.com/assets/embedded/lazyload.min.js`
- If this fails, check your CORS settings or ISP blocks
---
## Common Issues & Solutions
### Issue 1: "Not in Discord Activity context (no frame_id)"
**Cause:** Discord is not launching the Activity with the required parameter
**Solution:**
1. Verify Activity URL is set to: `https://aethex.dev/activity` (exactly)
2. Wait 5 minutes for Discord to cache the configuration
3. Try again in Discord
### Issue 2: "Failed to initialize Discord Activity"
**Cause:** Discord SDK failed to initialize or authorize
**Solution:**
1. Check browser console for specific error message
2. Verify `VITE_DISCORD_CLIENT_ID=578971245454950421` is set
3. Ensure `identify` scope is selected in OAuth2 settings
4. Try opening Activity in an incognito window (clear cache)
### Issue 3: "X-Frame-Options: sameorigin" Error
**Cause:** Server is sending restrictive frame headers
**Solution:**
1. Verify `/api/discord/interactions` endpoint exists and is reachable
2. Check that `X-Frame-Options: ALLOWALL` is being set (line 159 of code/server/index.ts)
3. Check that `Access-Control-Allow-Origin: *` is being set
4. Restart the server to apply header changes
### Issue 4: 403 Forbidden on Directory API
**Cause:** Discord can't validate your app configuration
**Solution:**
1. Ensure Activities feature is fully enabled
2. Wait 10 minutes after changing any settings
3. Clear browser cache (Ctrl+Shift+Delete)
4. Try in a different browser
5. Contact Discord support if issue persists
---
## Testing Activity in Development
### Using Discord's Embedded Test
1. Go to your app's Activity Settings
2. Click "Test Activity" or "Preview" button
3. Activity should open in a modal window
4. Check console (F12) for errors
### Using a Test Server
1. Create a private Discord server
2. Add bot to the server
3. Right-click bot name → Apps → Select your activity
4. Activity modal should open
---
## Environment Variables to Verify
On your hosting platform (Vercel, Railway, etc.), ensure these are set:
```
DISCORD_BOT_TOKEN=<your_bot_token_from_discord_portal>
DISCORD_PUBLIC_KEY=<your_public_key_from_discord_portal>
DISCORD_CLIENT_ID=578971245454950421
DISCORD_CLIENT_SECRET=<your_client_secret_from_discord_portal>
VITE_DISCORD_CLIENT_ID=578971245454950421
```
**⚠️ CRITICAL SECURITY WARNING:**
- **NEVER** include real tokens, secrets, or keys in documentation
- **NEVER** commit these to git or public repositories
- Only set these values in your hosting platform's environment variables dashboard
- Get these values from: Discord Developer Portal > Your App
---
## Still Not Working?
1. **Check the logs**: Look at your hosting platform's logs for errors
2. **Check browser console**: Press F12 and look for `[Discord Activity]` messages
3. **Verify Discord Portal**: Screenshot your Activity Settings to confirm configuration
4. **Test endpoint manually**: Try `curl -v https://aethex.dev/api/discord/interactions`
5. **Clear everything**: Clear browser cache, restart bot, wait 10 minutes, try again
---
## Discord Developer Portal Checklist
- [ ] Activities feature is enabled
- [ ] Activity URL is set to `https://aethex.dev/activity`
- [ ] Interactions Endpoint URL is set to `https://aethex.dev/api/discord/interactions`
- [ ] Instance URL is set to `https://aethex.dev`
- [ ] Client ID matches: `578971245454950421`
- [ ] Client Secret is set and correct
- [ ] OAuth2 scopes include `identify` and `guilds`
- [ ] Interactions Endpoint shows green checkmark (verified)
- [ ] You waited at least 2 minutes after saving changes