> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecteurs partagés

> Connectez un seul compte de service que tous les utilisateurs de l'application partagent

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Vous consultez la documentation pour développeurs
    </div>

    <div className="dev-docs-banner-text">
      Cette documentation est destinée aux développeurs travaillant avec la plateforme
      développeur Base44. Pour des informations sur les connecteurs dans l'éditeur d'applications, consultez{" "}
      <a href="/Integrations/Connectors">Utilisation des connecteurs</a>.
    </div>
  </div>
</div>

Un connecteur partagé connecte un compte pour toute l'application. Tous les utilisateurs de l'application partagent le même jeton OAuth. Utilisez ceci pour les comptes de service, comme publier sur un canal Slack d'entreprise, lire depuis un Google Calendar partagé ou interroger un workspace Notion partagé.

**Pour configurer un connecteur partagé :**

1. [**Configurez**](#configure) un fichier JSONC pour chaque service dont vous avez besoin
2. [**Déployez et autorisez**](#deploy-and-authorize) via la CLI
3. [**Utilisez dans les fonctions backend**](#use-in-backend-functions) en appelant [`getConnection()`](/developers/references/sdk/docs/interfaces/connectors#getconnection) pour les connecteurs OAuth, ou en utilisant directement l'[API REST Stripe](#stripe) pour les paiements

## Configurer

Chaque connecteur est un fichier JSONC dans le répertoire des connecteurs de votre projet. Le fichier définit le type d'intégration et les scopes dont votre application a besoin. Par défaut, le répertoire est `base44/connectors/`, mais vous pouvez personnaliser le chemin dans votre [configuration de projet](/developers/backend/overview/project-structure#config-jsonc).

<Tree>
  <Tree.Folder name="connectors" defaultOpen>
    <Tree.File name="googlecalendar.jsonc" />

    <Tree.File name="slack.jsonc" />

    <Tree.File name="slackbot.jsonc" />

    <Tree.File name="notion.jsonc" />
  </Tree.Folder>
</Tree>

### Exemple

Cet exemple configure un connecteur Google Calendar avec des scopes de lecture et de gestion d'événements :

```jsonc theme={null}
{
  "type": "googlecalendar",
  "scopes": [
    "https://www.googleapis.com/auth/calendar.readonly",
    "https://www.googleapis.com/auth/calendar.events",
  ],
}
```

### Référence des champs

<ResponseField name="type" type="string" required>
  L'identifiant de type d'intégration. Consultez le tableau des [services pris en charge](/developers/backend/resources/connectors#supported-services) pour la liste complète des valeurs acceptées.

  Chaque type de connecteur ne peut être défini qu'une seule fois dans votre projet.
</ResponseField>

<ResponseField name="scopes" type="array" required>
  Tableau des scopes OAuth requis pour votre intégration. Les scopes spécifiques
  dépendent du service externe et des opérations que votre application doit effectuer.
  Consultez la documentation [permissions et scopes des
  connecteurs](/Integrations/Connectors#connector-permissions) pour les scopes
  disponibles pour chaque service.
</ResponseField>

## Déployer et autoriser

Déployez les connecteurs avec [`connectors push`](/developers/references/cli/commands/connectors-push) ou [`deploy`](/developers/references/cli/commands/deploy). Pour télécharger les connecteurs existants depuis Base44, utilisez [`connectors pull`](/developers/references/cli/commands/connectors-pull).

Lorsque vous poussez, la CLI gère chaque connecteur en fonction de son type :

* **Connecteurs OAuth :** la CLI vous invite à autoriser chaque connecteur un par un. Elle suggère d'ouvrir votre navigateur automatiquement, et si vous acceptez, elle parcourt séquentiellement la page d'autorisation de chaque intégration. Une fois l'autorisation terminée, vos jetons OAuth sont stockés en toute sécurité et vous pouvez les récupérer en utilisant le SDK.
* **Stripe :** la CLI provisionne un sandbox Stripe pour votre application et retourne une URL de réclamation pour terminer l'intégration. Aucun flux OAuth n'est nécessaire.

## Utiliser dans les fonctions backend

Une fois déployé et autorisé, utilisez le connecteur dans vos [fonctions backend](/developers/backend/resources/backend-functions/overview). L'approche dépend du modèle d'auth du connecteur :

<Tabs>
  <Tab title="Connecteurs OAuth">
    Appelez [`connectors.getConnection()`](/developers/references/sdk/docs/interfaces/connectors#getconnection) avec le type de connecteur pour récupérer un `accessToken` pour effectuer des appels API authentifiés. Certains connecteurs retournent également un `connectionConfig` avec des paramètres supplémentaires (par exemple un sous-domaine ou un ID de compte).

    Cet exemple récupère une connexion Google Calendar et obtient les prochains événements :

    ```typescript theme={null}
    const { accessToken } =
      await base44.asServiceRole.connectors.getConnection("googlecalendar");

    const timeMin = new Date().toISOString();
    const url = `https://www.googleapis.com/calendar/v3/calendars/primary/events?maxResults=10&orderBy=startTime&singleEvents=true&timeMin=${timeMin}`;

    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${accessToken}` },
    });

    const events = await response.json();
    ```
  </Tab>

  <Tab title="Stripe">
    Stripe n'utilise pas `getConnection()`. À la place, la plateforme stocke vos clés API Stripe en tant que secrets d'application lorsque vous provisionnez le connecteur. Dans vos fonctions backend, lisez `STRIPE_SECRET_KEY` depuis l'environnement et appelez directement l'[API REST Stripe](https://docs.stripe.com/api).

    Cet exemple crée une session Stripe Checkout et retourne l'URL de paiement :

    ```typescript theme={null}
    const STRIPE_SECRET_KEY = Deno.env.get("STRIPE_SECRET_KEY");

    Deno.serve(async (req) => {
      const { priceId, successUrl, cancelUrl } = await req.json();

      const response = await fetch("https://api.stripe.com/v1/checkout/sessions", {
        method: "POST",
        headers: {
          Authorization: `Bearer ${STRIPE_SECRET_KEY}`,
          "Content-Type": "application/x-www-form-urlencoded",
        },
        body: new URLSearchParams({
          "payment_method_types[]": "card",
          "line_items[0][price]": priceId,
          "line_items[0][quantity]": "1",
          mode: "payment",
          success_url: successUrl || `${req.headers.get("origin")}?success=true`,
          cancel_url: cancelUrl || `${req.headers.get("origin")}?canceled=true`,
        }),
      });

      const session = await response.json();
      return Response.json({ url: session.url });
    });
    ```
  </Tab>
</Tabs>

## Automatisations de connecteur

Les automatisations de connecteur permettent à vos fonctions backend de répondre aux événements des services connectés en temps réel. Par exemple, vous pouvez exécuter une fonction lorsqu'un nouvel e-mail arrive dans Gmail ou qu'un fichier change dans Google Drive.

Configurez les automatisations de connecteur dans votre fichier `function.jsonc` aux côtés de vos autres automatisations. Consultez [Automatisations de connecteur](/developers/backend/resources/backend-functions/automations#connector-automations) pour la référence complète des champs, les événements pris en charge et la documentation de la charge utile.

## Voir aussi

* [Présentation des connecteurs](/developers/backend/resources/connectors)
* [Connecteurs d'utilisateur d'application](/developers/backend/resources/connectors/app-user-connectors)
* [Référence connecteurs SDK](/developers/references/sdk/docs/interfaces/connectors#getconnection)
* [connectors push](/developers/references/cli/commands/connectors-push)
* [connectors pull](/developers/references/cli/commands/connectors-pull)
* [deploy](/developers/references/cli/commands/deploy)
* [Fonctions backend](/developers/backend/resources/backend-functions/overview)
* [Automatisations](/developers/backend/resources/backend-functions/automations)

<Note>Cette page a été traduite à l'aide de l'IA. Pour les informations les plus précises et à jour, consultez la [version anglaise](/). </Note>
