Blog

Instagram Messaging API: Umfassender Entwicklerleitfaden

Erfahren Sie, wie Sie die Instagram Messaging API integrieren, um DMs programmgesteuert zu senden, Webhooks zu verwalten und automatisierte Nachrichtenflüsse zu

Von

+8

Überall posten. Eine API.

Try Free

The Instagram Messaging API ermöglicht es Unternehmen, direkt über die offizielle Graph API von Instagram programmatisch Nachrichten zu senden und zu empfangen. Egal, ob Sie Automatisierungen für den Kundenservice, Benachrichtigungssysteme oder Conversational Commerce-Flows entwickeln, dieser Leitfaden enthält alles, was Sie benötigen, um die Integration durchzuführen. Instagram DM API in Ihre Anwendung.

Die Messaging-Funktionen von Instagram sind Teil des umfassenden Meta Graph API-Ökosystems. Im Gegensatz zu inoffiziellen Methoden, die das Risiko einer Kontosperrung mit sich bringen, bietet die offizielle Instagram Direktnachrichten-API bietet zuverlässige, skalierbare Nachrichtenübermittlung für Geschäftskonten mit angemessener Authentifizierung und Ratenbegrenzung.

Voraussetzungen und Anforderungen

Bevor Sie Instagram-DMs programmgesteuert senden können, müssen Sie mehrere Komponenten einrichten. Die Instagram Messaging API hat spezifische Anforderungen, die sich von anderen sozialen Plattformen unterscheiden.

Anforderungen an Geschäftskonten

Die Instagram Messaging API funktioniert nur mit Instagram Business- oder Creator-Konten, die mit einer Facebook-Seite verbunden sind. Persönliche Konten haben keinen Zugriff auf die Messaging-Endpunkte.

RequirementDetails
KontotypInstagram Business- oder Creator-Konto
Facebook-SeiteMuss mit einer Facebook-Seite verknüpft sein.
Meta AppBenötigt eine registrierte Meta-Entwickler-App
Permissionsinstagram_business_manage_messages scope
App-BewertungErforderlich für den Produktionszugang über Testbenutzer hinaus

Eine Meta-Entwickler-App erstellen

  1. Navigiere zu developers.facebook.com und eine neue App erstellen
  2. Wählen Sie "Unternehmen" als App-Typ aus.
  3. Fügen Sie das Produkt "Instagram Graph API" zu Ihrer App hinzu.
  4. Konfigurieren Sie Ihre OAuth-Umleitungs-URIs.
  5. Notiere dir deine App-ID und dein App-Geheimnis.
```
// Umgebungsvariablen für die Instagram API-Integration
interface InstagramConfig {
  clientId: string;      // Meta App-ID
  clientSecret: string;  // Meta App-Geheimnis
  redirectUri: string;   // Ihre OAuth-Callback-URL
  webhookVerifyToken: string; // Für die Webhook-Überprüfung
}

const config: InstagramConfig = {
  clientId: process.env.INSTAGRAM_CLIENT_ID || '',
  clientSecret: process.env.INSTAGRAM_CLIENT_SECRET || '',
  redirectUri: process.env.INSTAGRAM_REDIRECT_URI || '',
  webhookVerifyToken: process.env.INSTAGRAM_WEBHOOK_VERIFY_TOKEN || '',
};
```

Hinweis: Speichern Sie alle Anmeldeinformationen in Umgebungsvariablen. Kommen Sie niemals API-Geheimnisse in die Versionskontrolle.

OAuth 2.0-Authentifizierungsfluss

Die Instagram Messaging API verwendet OAuth 2.0 zur Authentifizierung. Sie müssen einen zweistufigen Token-Austauschprozess implementieren, um langfristige Zugriffstoken zu erhalten.

Schritt 1: Autorisierungs-URL generieren

Leiten Sie die Benutzer zur Autorisierungsseite von Instagram mit den erforderlichen Berechtigungen weiter:

function getInstagramAuthUrl(state: string): string {
  const scopes = [
    'instagram_business_basic',
    'instagram_business_content_publish',
    'instagram_business_manage_messages', // Erforderlich für DMs
  ];

  const params = new URLSearchParams({
    client_id: config.clientId,
    redirect_uri: config.redirectUri,
    scope: scopes.join(','),
    response_type: 'code',
    auth_type: 'rerequest', // Erneute Berechtigungsanfrage erzwingen
    state: state, // CSRF-Schutz
  });

  return `https://www.instagram.com/oauth/authorize?${params.toString()}`;
}

Schritt 2: Code gegen Tokens eintauschen

Nachdem der Benutzer Ihre App autorisiert hat, leitet Instagram zu Ihrer Callback-URL mit einem Autorisierungscode weiter. Tauschen Sie diesen gegen Zugriffstoken aus:

interface TokenResponse {
  accessToken: string;
  refreshToken: string;
  userId: string;
  expiresIn: number;
}

async function exchangeCodeForToken(
  code: string
): Promise {
  // Schritt 1: Code gegen kurzlebigen Token eintauschen
  const tokenResponse = await fetch(
    'https://api.instagram.com/oauth/access_token',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      body: new URLSearchParams({
        client_id: config.clientId,
        client_secret: config.clientSecret,
        grant_type: 'authorization_code',
        redirect_uri: config.redirectUri,
        code: code,
      }),
    }
  );

  if (!tokenResponse.ok) {
    const error = await tokenResponse.text();
    throw new Error(`Token-Austausch fehlgeschlagen: ${error}`);
  }

  const shortLivedData = await tokenResponse.json();
  const shortLivedToken = shortLivedData.access_token;
  const userId = shortLivedData.user_id;

  // Schritt 2: Gegen langlebigen Token eintauschen (60 Tage)
  const longLivedResponse = await fetch(
    `https://graph.instagram.com/access_token?` +
    `grant_type=ig_exchange_token&` +
    `client_secret=${config.clientSecret}&` +
    `access_token=${shortLivedToken}`,
    { method: 'GET' }
  );

  if (!longLivedResponse.ok) {
    const error = await longLivedResponse.text();
    throw new Error(`Austausch für langlebigen Token fehlgeschlagen: ${error}`);
  }

  const longLivedData = await longLivedResponse.json();

  return {
    accessToken: longLivedData.access_token,
    refreshToken: longLivedData.access_token,
    userId: userId,
    expiresIn: longLivedData.expires_in,
  };
}

Zugriffstoken aktualisieren

Langfristige Tokens laufen nach 60 Tagen ab. Implementiere eine Token-Aktualisierung, um den Zugriff aufrechtzuerhalten:

async function refreshAccessToken(
  currentToken: string
): Promise<{ accessToken: string; expiresIn: number }> {
  const response = await fetch(
    `https://graph.instagram.com/refresh_access_token?` +
    `grant_type=ig_refresh_token&` +
    `access_token=${currentToken}`,
    { method: 'GET' }
  );

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`Token-Aktualisierung fehlgeschlagen: ${response.status} ${errorText}`);
  }

  const data = await response.json();

  if (data.error) {
    throw new Error(`Fehler bei der Token-Aktualisierung: ${data.error.message}`);
  }

  if (!data.access_token) {
    throw new Error('Die Token-Aktualisierung hat kein access_token zurückgegeben');
  }

  return {
    accessToken: data.access_token,
    expiresIn: data.expires_in,
  };
}

Hinweis: Planen Sie die Aktualisierung von Tokens, bevor sie ablaufen. Eine gute Praxis ist es, Tokens zu aktualisieren, wenn weniger als 7 Tage verbleiben.

Webhooks für Echtzeitnachrichten einrichten

Um eingehende Nachrichten in Echtzeit zu empfangen, müssen Sie Webhooks konfigurieren. Instagram sendet POST-Anfragen an Ihren Endpunkt, wann immer ein Nutzer Ihre Geschäftskonto anschreibt.

Webhook-Verifizierungsendpunkt

Instagram überprüft deine Webhook-URL mit einer GET-Anfrage, bevor sie aktiviert wird:

import { Request, Response } from 'express';

function handleWebhookVerification(
  req: Request,
  res: Response
): void {
  const mode = req.query['hub.mode'];
  const token = req.query['hub.verify_token'];
  const challenge = req.query['hub.challenge'];

  if (mode === 'subscribe' && token === config.webhookVerifyToken) {
    console.log('Webhook erfolgreich verifiziert');
    res.status(200).send(challenge);
    return;
  }

  console.error('Webhook-Verifizierung fehlgeschlagen');
  res.status(403).send('Verifizierung fehlgeschlagen');
}

Build faster with Late

One API call to post everywhere. No OAuth headaches. No platform-specific code.

Free tier • No credit card • 99.97% uptime

Nachrichten über die Instagram DM API senden

Die Kernfunktionalität von der Instagram Direktnachrichten-API ist das Versenden von Nachrichten an Nutzer, die Gespräche mit Ihrem Unternehmen begonnen haben.

Textnachrichten senden

To Instagram-DMs programmatisch senden, verwenden Sie den Nachrichten-Endpunkt:

interface SendMessageOptions {
  accessToken: string;
  igUserId: string;      // Ihre Instagram-Business-Konto-ID
  recipientId: string;   // Die Instagram-ID des Nutzers
  text: string;
}

interface SendMessageResponse {
  messageId: string;
}

async function sendTextMessage(
  options: SendMessageOptions
): Promise<SendMessageResponse> {
  const { accessToken, igUserId, recipientId, text } = options;

  const response = await fetch(
    `https://graph.instagram.com/${igUserId}/messages`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${accessToken}`,
      },
      body: JSON.stringify({
        recipient: {
          id: recipientId,
        },
        message: {
          text: text,
        },
      }),
    }
  );

  if (!response.ok) {
    const error = await response.text();
    throw new Error(`Nachricht konnte nicht gesendet werden: ${error}`);
  }

  const data = await response.json();
  return { messageId: data.message_id };
}

Ratenlimits und bewährte Praktiken

Das Verständnis von Ratenlimits ist entscheidend für den Aufbau zuverlässiger Instagram-Nachrichtenintegrationen.

Übersicht über die Rate Limits

LimittypThresholdWindow
API-Aufrufe200 AufrufePro Stunde und Benutzer
Gesendete NachrichtenVariesBasierend auf dem Gesprächsverlauf
Webhook-AntwortenMuss innerhalb von 20 Sekunden antworten.Pro Ereignis

Beste Praktiken

  1. Implementiere exponentielles Backoff bei Ratenlimitfehler
  2. Benutzertokens zwischenspeichern um wiederholte Authentifizierungsanfragen zu vermeiden
  3. Webhook-Bestätigung verwenden sofort, asynchron verarbeiten
  4. Überwachen Sie die Token-Ablaufzeit und proaktiv aktualisieren
  5. Protokolliere alle API-Interaktionen zum Debuggen

Integration von Instagram-Nachrichten mit Late

Der Aufbau und die Pflege von Integrationen mit der Instagram Messaging API erfordern erheblichen Entwicklungsaufwand. Sie müssen OAuth-Workflows, Token-Aktualisierungen, die Verwaltung von Webhooks, die Begrenzung der Anfragen und die Fehlerbehandlung über möglicherweise mehrere soziale Plattformen hinweg berücksichtigen.

Late bietet eine einheitliche API, die die Integration von Instagram-Nachrichten sowie anderen sozialen Plattformen vereinfacht. Anstatt separate Integrationen für jede Plattform zu entwickeln, bietet Late:

  • Vereinheitlichte AuthentifizierungEinzelner OAuth-Flow für Instagram, Facebook, Twitter, LinkedIn und mehr
  • Automatisches Token-ManagementLate kümmert sich automatisch um das Token-Refresh und die Ablaufverwaltung.
  • Webhook-AbstraktionErhalte standardisierte Webhook-Ereignisse über alle Plattformen hinweg.
  • Integrierte RatenbegrenzungIntelligente Anforderungswarteschlangen und Wiederholungslogik
  • Typensicheres SDKVollständige TypeScript-Unterstützung mit umfassenden Typen

Mit Late wird die Implementierung von Instagram-Nachrichten ganz einfach:

import { Late } from '@getlate/sdk';

const late = new Late({ apiKey: process.env.LATE_API_KEY });

// Sende eine Nachricht über die einheitliche API von Late
await late.messages.send({
  accountId: 'instagram-account-id',
  recipientId: 'user-id',
  content: {
    text: 'Hallo von Late!',
  },
});

// Verarbeite eingehende Nachrichten mit normalisierten Ereignissen
late.webhooks.on('message.received', (event) => {
  console.log('Plattform:', event.platform); // 'instagram'
  console.log('Nachricht:', event.content.text);
});

Late übernimmt die Komplexität der Instagram Messaging API, damit Sie sich auf die Kernfunktionen Ihrer Anwendung konzentrieren können. Schauen Sie sich die Late-Dokumentation um mit der Integration von Instagram-Nachrichten und anderen sozialen Plattformen zu beginnen.

Eine API. 13+ Plattformen.

Social Media Features in Minuten integrieren, nicht Wochen.

Für Entwickler gemacht. Von Agenturen geschätzt. Von 6.325 Nutzern vertraut.