Entegrasyon

Sosyal Medya Hesapları Bağlama (7 Platform OAuth)

YSN Sosyal Medya Komuta Merkezi, 7 platforma (Instagram, Facebook, TikTok, YouTube, X/Twitter, LinkedIn, Threads) tek panelden bağlanmanızı sağlar. Her platform kendi OAuth2 akışına sahiptir; bu dokümanda hesap ekleme, token yenileme, çoklu hesap yönetimi ve güvenlik detaylarını anlatıyoruz.

Ortak Akış

Her platformun kendi sayfası vardır: /social/instagram, /social/facebook, /social/tiktok, /social/youtube, /social/x, /social/linkedin, /social/threads. Sağ üstte "Hesap Bağla" butonu, tıklandığında modal açılır. İki sekme: "OAuth ile bağla" ve "Manuel token".

OAuth akışında kullanıcı YSN → platform → YSN yönlendirmesi yaşar. Geri dönüşte backend authorization_code ile access_token ve varsa refresh_token alır, Fernet ile şifreleyip veritabanına yazar.

Platform Platform

Instagram (Meta)

Instagram API, Facebook Login üzerinden çalışır. Instagram Business veya Creator hesabı şart. Bağlantı sırasında Facebook sayfanızı seçer, o sayfaya bağlı Instagram hesabı otomatik listelenir. İzinler: instagram_basic, instagram_content_publish, instagram_manage_insights, pages_show_list, pages_read_engagement.

Webhook: POST /api/v1/social/webhooks/instagram. HMAC-SHA256 imzası X-Hub-Signature-256 başlığında gelir; app_secret ile doğrulanır.

Facebook

Page token alır. Yayın + reklam API'si açılır. İzinler: pages_manage_posts, pages_read_engagement, pages_manage_metadata, read_insights.

TikTok

TikTok for Business API. Client key + secret Meta Developer Portal'ına benzer bir panelden alınır. Token ömrü 24 saat, refresh token 365 gün. Webhook imzası X-TikTok-Signature + timestamp.

YouTube (Google)

OAuth2, youtube.force-ssl scope. Kanal seçimi modalda yapılır; bir hesabın birden çok kanalı varsa hepsi listelenir. Webhook: PubSubHubbub protokolü, hub.challenge verification.

X / Twitter

OAuth 2.0 PKCE. Free tier çok sınırlı; Basic veya Pro plana geçmeniz tavsiye edilir. Webhook imza doğrulama CRC check ile.

LinkedIn

OAuth 2.0. Kişisel profil + Company Page seçimi. İzinler: w_member_social, r_liteprofile, r_organization_social, w_organization_social. Webhook: SHA256 signature.

Threads

Instagram ile aynı Meta altyapısı. İzinler: threads_basic, threads_content_publish, threads_manage_insights.

Manuel Token (Geliştiriciler için)

"Manuel token" sekmesine access_token, varsa refresh_token ve expires_at girin. OAuth olmadan dış sistemden aldığınız token ile direkt bağlanır. İç test ortamlarında kullanışlıdır.

Token Depolama ve Rotation

Tüm tokenlar cryptography.fernet.MultiFernet ile şifrelenir. Master key .env'deki SOCIAL_FERNET_KEYS değişkeninde tutulur (virgülle ayrılmış çoklu anahtar; ilki encrypt eder, hepsi decrypt dener). Key rotation sırasında eski anahtarı kaldırmadan önce rotate_token(cipher) fonksiyonu tüm kayıtları yeni key ile yeniden şifreler.

Çoklu Hesap Yönetimi

Her platform için sınırsız hesap bağlayabilirsiniz. Ajans senaryosunda 20 müşterinin Instagram'ı tek YSN hesabından yönetilebilir. Yayın yaparken "Hangi hesaptan?" dropdown'ı çıkar. Planlı yayın da hesap seçimini destekler.

Yenileme ve Kopma Uyarıları

Token süresi dolmadan 24 saat önce sistem arka planda /refresh çağırır. Başarısız olursa kullanıcıya e-posta + panel içi banner uyarı gösterilir. GET /api/v1/social/accounts endpoint'i her hesap için status alanını döner: active | expired | disconnected | rate_limited.

70 Otomasyon Preset'i

Platform başına 10 hazır preset, toplam 70: "Yeni yorum geldiğinde Claude ile yanıt üret", "DM'de hasta randevu ister gibi mesaj atarsa formu aç", "Reels izlenmesi 10K'yı geçerse sponsorluk panelini aç", vs. /settings/automations sayfasında aç-kapa yapılır.

Webhook Forward (n8n)

Gelen her webhook event'i, yukarıdaki imza doğrulaması sonrası n8n URL'nize forward edilir. Böylece özel iş akışlarınızı n8n'de kurar, YSN'yi bir olay buffer'ı gibi kullanabilirsiniz.

Güvenlik Notları

  • İzinli scope'lar minimum tutulur; gerek olmayan yetki istenmez.
  • Token ekranda hiç gösterilmez; sadece "Bağlı" / "Süresi dolmuş" durumu görünür.
  • Bağlantıyı kopardığınızda token silinir ve platforma `revoke` çağrısı yapılır.