> ## 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.

# Conectores compartilhados

> Conecte uma única conta de serviço que todos os usuários do app compartilham

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Você está vendo a documentação para desenvolvedores
    </div>

    <div className="dev-docs-banner-text">
      Esta documentação é para desenvolvedores que trabalham com a plataforma para desenvolvedores
      Base44. Para informações sobre conectores no editor de apps, veja{" "}
      <a href="/Integrations/Connectors">Usando Conectores</a>.
    </div>
  </div>
</div>

Um conector compartilhado conecta uma conta para todo o app. Todos os usuários do app compartilham o mesmo token OAuth. Use isto para contas de serviço, como postar em um canal corporativo do Slack, ler de um Google Calendar compartilhado ou consultar um workspace compartilhado do Notion.

**Para configurar um conector compartilhado:**

1. [**Configure**](#configure) um arquivo JSONC para cada serviço que você precisa
2. [**Implante e autorize**](#deploy-and-authorize) pela CLI
3. [**Use em funções de backend**](#use-in-backend-functions) chamando [`getConnection()`](/developers/references/sdk/docs/interfaces/connectors#getconnection) para conectores OAuth, ou usando a [API REST do Stripe](#stripe) diretamente para pagamentos

## Configurar

Cada conector é um arquivo JSONC no diretório de conectores do seu projeto. O arquivo define o tipo de integração e os escopos que seu app precisa. Por padrão o diretório é `base44/connectors/`, mas você pode personalizar o caminho na [configuração do seu projeto](/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>

### Exemplo

Este exemplo configura um conector do Google Calendar com escopos de leitura e gerenciamento de eventos:

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

### Referência de campos

<ResponseField name="type" type="string" required>
  O identificador do tipo de integração. Veja a tabela de [serviços suportados](/developers/backend/resources/connectors#supported-services) para a lista completa de valores aceitos.

  Cada tipo de conector pode ser definido apenas uma vez no seu projeto.
</ResponseField>

<ResponseField name="scopes" type="array" required>
  Array de escopos OAuth necessários para sua integração. Os escopos específicos
  dependem do serviço externo e de quais operações seu app precisa realizar.
  Veja a documentação de [permissões e escopos de
  conectores](/Integrations/Connectors#connector-permissions) para escopos
  disponíveis para cada serviço.
</ResponseField>

## Implante e autorize

Implante conectores com [`connectors push`](/developers/references/cli/commands/connectors-push) ou [`deploy`](/developers/references/cli/commands/deploy). Para baixar conectores existentes da Base44, use [`connectors pull`](/developers/references/cli/commands/connectors-pull).

Quando você faz push, a CLI lida com cada conector com base no seu tipo:

* **Conectores OAuth:** A CLI solicita que você autorize cada conector um por um. Ela sugere abrir seu navegador automaticamente, e se você aceitar, itera pela página de autorização de cada integração sequencialmente. Após a conclusão da autorização, seus tokens OAuth são armazenados com segurança e você pode recuperá-los usando o SDK.
* **Stripe:** A CLI provisiona um sandbox do Stripe para seu app e retorna uma URL de claim para completar o onboarding. Nenhum fluxo OAuth é necessário.

## Use em funções de backend

Uma vez implantado e autorizado, use o conector nas suas [funções de backend](/developers/backend/resources/backend-functions/overview). A abordagem depende do modelo de auth do conector:

<Tabs>
  <Tab title="OAuth connectors">
    Chame [`connectors.getConnection()`](/developers/references/sdk/docs/interfaces/connectors#getconnection) com o tipo de conector para recuperar um `accessToken` para fazer chamadas autenticadas à API. Alguns conectores também retornam um `connectionConfig` com parâmetros adicionais (por exemplo, um subdomínio ou ID de conta).

    Este exemplo recupera uma conexão do Google Calendar e busca eventos futuros:

    ```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">
    O Stripe não usa `getConnection()`. Em vez disso, a plataforma armazena suas API keys do Stripe como secrets do app quando você provisiona o conector. Nas suas funções de backend, leia `STRIPE_SECRET_KEY` do ambiente e chame a [API REST do Stripe](https://docs.stripe.com/api) diretamente.

    Este exemplo cria uma sessão do Stripe Checkout e retorna a URL de pagamento:

    ```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>

## Connector automations

As connector automations permitem que suas funções de backend respondam a eventos de serviços conectados em tempo real. Por exemplo, você pode executar uma função quando um novo e-mail chega no Gmail ou um arquivo muda no Google Drive.

Configure connector automations no seu arquivo `function.jsonc` junto com suas outras automations. Veja [Connector automations](/developers/backend/resources/backend-functions/automations#connector-automations) para a referência completa de campos, eventos suportados e documentação do payload.

## Veja também

* [Visão geral de conectores](/developers/backend/resources/connectors)
* [Conectores de usuário do app](/developers/backend/resources/connectors/app-user-connectors)
* [Referência do SDK de conectores](/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)
* [Funções de backend](/developers/backend/resources/backend-functions/overview)
* [Automations](/developers/backend/resources/backend-functions/automations)

<Note>Esta página foi traduzida usando IA. Para informações mais precisas e atualizadas, consulte a [versão em inglês](/). </Note>
