Source

config/social.js

/**
 * Social Media Platform Configuration
 * 
 * This module contains OAuth configuration settings for all supported social media platforms.
 * Each platform configuration includes client credentials, OAuth URLs, scopes, and API endpoints.
 * 
 * @author Ignas Panavas
 * @version 1.0.0
 */

require('dotenv').config();

/**
 * Social Media Platform Configurations
 * 
 * Contains OAuth and API configuration for supported social media platforms:
 * - Instagram Business API
 * - TikTok for Business API  
 * - YouTube Data API v3
 * - Facebook Graph API
 * - Snapchat Kit API
 * 
 * Each platform configuration includes:
 * - OAuth client credentials (from environment variables)
 * - Authorization and token URLs
 * - Required OAuth scopes
 * - API base URLs for data fetching
 * 
 * @type {Object}
 * @property {Object} instagram - Instagram Business API configuration
 * @property {Object} tiktok - TikTok for Business API configuration
 * @property {Object} youtube - YouTube Data API v3 configuration
 * @property {Object} facebook - Facebook Graph API configuration
 * @property {Object} snapchat - Snapchat Kit API configuration
 */
const socialConfigs = {
  /** Instagram Business API Configuration */
  instagram: {
    clientId: process.env.INSTAGRAM_CLIENT_ID,
    clientSecret: process.env.INSTAGRAM_CLIENT_SECRET,
    redirectUri: process.env.INSTAGRAM_REDIRECT_URI,
    scope: 'instagram_business_basic,instagram_business_manage_messages,instagram_business_manage_comments,instagram_business_content_publish',
    authUrl: 'https://www.instagram.com/oauth/authorize',
    tokenUrl: 'https://api.instagram.com/oauth/access_token',
    apiBaseUrl: 'https://graph.instagram.com'
  },
  
  /** TikTok for Business API Configuration */
  tiktok: {
    clientId: process.env.TIKTOK_CLIENT_ID,
    clientSecret: process.env.TIKTOK_CLIENT_SECRET,
    redirectUri: process.env.TIKTOK_REDIRECT_URI,
    scope: process.env.TIKTOK_SCOPE || 'user.info.basic',
    authUrl: 'https://www.tiktok.com/v2/auth/authorize/',
    tokenUrl: 'https://open.tiktokapis.com/v2/oauth/token/',
    apiBaseUrl: 'https://open.tiktokapis.com'
  },
  
  /** YouTube Data API v3 Configuration */
  youtube: {
    clientId: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    redirectUri: process.env.YOUTUBE_REDIRECT_URI,
    scope: 'https://www.googleapis.com/auth/youtube.readonly',
    authUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
    tokenUrl: 'https://oauth2.googleapis.com/token',
    apiBaseUrl: 'https://www.googleapis.com/youtube/v3'
  },
  
  /** Facebook Graph API Configuration */
  facebook: {
    clientId: process.env.FACEBOOK_CLIENT_ID,
    clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
    redirectUri: process.env.FACEBOOK_REDIRECT_URI,
    scope: 'pages_read_engagement,pages_show_list',
    authUrl: 'https://www.facebook.com/v18.0/dialog/oauth',
    tokenUrl: 'https://graph.facebook.com/v18.0/oauth/access_token',
    apiBaseUrl: 'https://graph.facebook.com/v18.0'
  },
  
  /** Snapchat Kit API Configuration */
  snapchat: {
    clientId: process.env.SNAPCHAT_CLIENT_ID,
    clientSecret: process.env.SNAPCHAT_CLIENT_SECRET,
    redirectUri: process.env.SNAPCHAT_REDIRECT_URI,
    scope: 'user.display_name,user.bitmoji.avatar',
    authUrl: 'https://accounts.snapchat.com/login/oauth2/authorize',
    tokenUrl: 'https://accounts.snapchat.com/login/oauth2/access_token',
    apiBaseUrl: 'https://kit.snapchat.com/v1'
  }
};

module.exports = socialConfigs;