Pular para o conteúdo principal

Conecte seu agente de IA a APIs de terceiros

dica:

Explore as soluções de IA do Logto: autenticação (authentication) e autorização (authorization) para servidores MCP, agentes de IA e aplicativos.

Este guia mostra como habilitar seu agente de IA para acessar APIs de terceiros (por exemplo, Google Calendar, GitHub, etc.) em nome dos usuários. Aproveitando os conectores sociais do Logto e o Cofre de Segredos (Secret Vault), você pode armazenar e gerenciar tokens de acesso com segurança, permitindo que seu agente execute tarefas automatizadas sem pedir repetidamente para os usuários se autenticarem novamente.

Você aprenderá como:

  • Configurar conectores sociais com armazenamento de tokens de terceiros.
  • Solicitar permissões mínimas durante o login inicial.
  • Solicitar permissões adicionais progressivamente conforme necessário.
  • Recuperar e usar tokens armazenados para acessar APIs de terceiros.

Por que seu agente de IA precisa de acesso a APIs de terceiros​

Agentes de IA estão sendo cada vez mais usados para automatizar tarefas que exigem interação com serviços externos. Por exemplo:

  • 📅 Gerenciamento de calendário: Seu agente de IA pode agendar reuniões automaticamente, adicionar eventos ou ajustar compromissos no Google Calendar.
  • 📧 Automação de e-mails: Envie e-mails de acompanhamento, organize caixas de entrada ou redija respostas usando as APIs do Gmail.
  • 💻 Gerenciamento de código: Crie issues no GitHub, revise pull requests ou gerencie repositórios.
  • 📁 Gerenciamento de arquivos: Faça upload, organize ou compartilhe arquivos no Google Drive ou Dropbox.

Para executar essas tarefas, seu agente de IA precisa de acesso seguro às APIs de terceiros autorizadas pelo usuário, o que significa lidar corretamente e com segurança com tokens OAuth.

Como funciona​

Aqui está uma visão geral rápida do fluxo:

  1. Usuário solicita uma tarefa: O usuário pede ao agente de IA para executar uma tarefa que exige acesso a uma API de terceiros (por exemplo, adicionar um evento ao calendário).
  2. Solicitação de autorização: O agente detecta a necessidade de acesso de terceiros e solicita autorização ao usuário.
  3. Tokens armazenados: Após a autorização do usuário, o Logto armazena com segurança os tokens de acesso e atualização no Cofre de Segredos.
  4. Execução da tarefa: O agente recupera o token armazenado e chama a API de terceiros para concluir a tarefa.

Uma vez autorizado, o usuário pode realizar várias tarefas sem precisar autorizar novamente. O Logto armazena os tokens com segurança e os atualiza automaticamente quando necessário, proporcionando uma experiência contínua para as interações do agente de IA.

Pré-requisitos​

Antes de começar, certifique-se de ter:

  • Um tenant do Logto Cloud (ou Logto auto-hospedado v1.31+)
  • Uma conta de provedor de terceiros com acesso à API (por exemplo, Google Cloud Console)
  • Um aplicativo de agente de IA integrado ao Logto SDK (os usuários podem fazer login no seu agente de IA)

Configure o conector social com armazenamento de token​

Para permitir que seu agente de IA acesse APIs de terceiros, você precisa configurar um conector social com armazenamento de token habilitado. Isso permite que o Logto armazene e gerencie tokens de acesso quando os usuários autorizam serviços de terceiros durante a interação com seu agente de IA.

Vamos usar o Google como exemplo:

  1. Navegue até Console > Conectores > Conectores sociais.
  2. Clique em Adicionar conector social e selecione Google.
  3. Siga o guia de configuração do conector Google para configurar suas credenciais OAuth.
  4. Nas configurações do conector:
    • Habilite Armazenar tokens para acesso persistente à API para armazenar tokens no Cofre de Segredos.
    • Defina Prompts para incluir consent para garantir que os usuários vejam a solicitação de permissão.
    • Habilite Acesso offline para receber tokens de atualização para acesso prolongado à API.
  5. Salve suas alterações.
info:

Você não precisa adicionar este conector à sua experiência de login. O conector será usado para autorização sob demanda quando seu agente de IA precisar acessar APIs de terceiros, não para login do usuário.

Solicite autorização e acesse APIs de terceiros​

Quando seu agente de IA precisar acessar uma API de terceiros (por exemplo, Google Calendar), ele deve primeiro verificar se o usuário já autorizou o acesso. Caso contrário, solicite autorização ao usuário.

Habilite o Account API:

Antes de prosseguir, habilite o Account API em Console > Login & conta > Central de contas. Saiba mais sobre como habilitar o Account API.

Passo 1: Verifique se já existe autorização​

Primeiro, tente recuperar o token de acesso armazenado para ver se o usuário já autorizou:

async function getGoogleAccessToken(userAccessToken: string) {
const response = await fetch(
'https://[tenant-id].logto.app/my-account/identities/google/access-token',
{
headers: {
Authorization: `Bearer ${userAccessToken}`,
},
}
);

return response.json();
}

Passo 2: Solicite autorização se necessário​

Se não existir token, o token expirou ou você precisa ampliar o escopo do token de acesso, use a Social Verification API do Logto para iniciar o fluxo de autorização:

async function requestGoogleAuthorization(userAccessToken: string, scopes: string) {
// Gere um estado aleatório para proteção CSRF
const state = crypto.randomUUID();
sessionStorage.setItem('oauth_state', state);

// Inicie a verificação social
const response = await fetch('https://[tenant-id].logto.app/api/verification/social', {
method: 'POST',
headers: {
Authorization: `Bearer ${userAccessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
connectorId: '<google_connector_id>',
state,
redirectUri: 'https://your-ai-agent.com/callback',
scope: scopes,
}),
});

const { verificationRecordId, authorizationUri } = await response.json();

// Armazene verificationRecordId para uso posterior
sessionStorage.setItem('verificationRecordId', verificationRecordId);

// Redirecione o usuário para o Google para autorização
window.location.href = authorizationUri;
}

Passo 3: Trate o callback de autorização​

Após o usuário conceder permissões, o Google redireciona de volta para seu app. Complete a verificação e armazene os tokens:

async function handleAuthorizationCallback(
userAccessToken: string,
callbackParams: URLSearchParams
) {
const verificationRecordId = sessionStorage.getItem('verificationRecordId');
const storedState = sessionStorage.getItem('oauth_state');
const code = callbackParams.get('code');
const state = callbackParams.get('state');

// Valide o estado para evitar ataques CSRF
if (state !== storedState) {
throw new Error('Invalid state parameter');
}

// Verifique a autorização
await fetch('https://[tenant-id].logto.app/api/verification/social/verify', {
method: 'POST',
headers: {
Authorization: `Bearer ${userAccessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
verificationRecordId,
connectorData: {
code,
state,
redirectUri: 'https://your-ai-agent.com/callback',
},
}),
});

// Armazene os tokens no Cofre de Segredos do Logto
await fetch('https://[tenant-id].logto.app/my-account/identities/google/access-token', {
method: 'PUT',
headers: {
Authorization: `Bearer ${userAccessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
verificationRecordId,
}),
});

// Limpeza
sessionStorage.removeItem('verificationRecordId');
sessionStorage.removeItem('oauth_state');
}

Passo 4: Chame a API de terceiros​

Agora seu agente de IA pode recuperar o token e chamar a API:

async function addCalendarEvent(userAccessToken: string, eventDetails: EventDetails) {
// Obtenha o token de acesso do Google armazenado
const tokenData = await getGoogleAccessToken(userAccessToken);

if (!tokenData) {
// Usuário não autorizou, solicite autorização com escopo de calendário
await requestGoogleAuthorization(
userAccessToken,
'https://www.googleapis.com/auth/calendar.events'
);
return; // Continuará após o redirecionamento
}

// Chame a API do Google Calendar
const response = await fetch('https://www.googleapis.com/calendar/v3/calendars/primary/events', {
method: 'POST',
headers: {
Authorization: `Bearer ${tokenData.accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(eventDetails),
});

return response.json();
}

O Logto lida com a atualização do token automaticamente. Se o token de acesso estiver expirado mas existir um token de atualização, o Logto obterá um novo token de acesso de forma transparente ao chamar o endpoint de recuperação.

Solicite permissões adicionais​

À medida que seu agente de IA assume mais tarefas, pode ser necessário solicitar permissões adicionais. Por exemplo, se o usuário inicialmente autorizou apenas acesso de leitura ao calendário, mas agora deseja criar eventos, você precisará de permissões de escrita.

Por que autorização incremental?​

  • Melhor experiência do usuário: Os usuários têm mais chances de conceder permissões quando entendem o motivo no contexto.
  • Taxas de conversão mais altas: Menos permissões iniciais significam menos atrito.
  • Construção de confiança: Usuários confiam em aplicativos que pedem apenas o necessário.

Exemplo: Atualizando de leitura para escrita​

async function createCalendarEvent(userAccessToken: string, eventDetails: EventDetails) {
const tokenData = await getGoogleAccessToken(userAccessToken);

if (!tokenData) {
// Ainda não autorizado, solicite permissão de escrita no calendário diretamente
await requestGoogleAuthorization(userAccessToken, 'https://www.googleapis.com/auth/calendar');
return;
}

// Tente criar o evento
const response = await fetch('https://www.googleapis.com/calendar/v3/calendars/primary/events', {
method: 'POST',
headers: {
Authorization: `Bearer ${tokenData.accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(eventDetails),
});

if (response.status === 403) {
// Permissões insuficientes, solicite escopo adicional
await requestGoogleAuthorization(
userAccessToken,
'https://www.googleapis.com/auth/calendar' // Acesso total ao calendário
);
return;
}

return response.json();
}
dica:

Ao solicitar escopos adicionais, o usuário verá uma tela de consentimento mostrando apenas as novas permissões solicitadas. As permissões existentes serão preservadas.

Gerencie o status dos tokens​

O Console do Logto oferece visibilidade sobre o status dos tokens de cada usuário:

  1. Navegue até Console > Gerenciamento de usuários.
  2. Clique em um usuário para ver seus detalhes.
  3. Role até a seção Conexões para ver todas as contas sociais vinculadas.
  4. Cada conexão mostra o status do token:
    • Ativo: O token de acesso é válido e pronto para uso.
    • Expirado: O token de acesso expirou. Se existir um token de atualização, ele será atualizado automaticamente na próxima recuperação.
    • Inativo: Não há tokens armazenados para esta conexão.

Melhores práticas de segurança​

Ao construir agentes de IA que acessam APIs de terceiros, mantenha estas práticas de segurança em mente:

  • Solicite escopos mínimos: Solicite apenas as permissões que seu agente realmente precisa.
  • Use autorização incremental: Solicite permissões adicionais no contexto, não todas de uma vez.
  • Trate expiração de tokens de forma adequada: Sempre trate casos em que tokens possam estar expirados ou revogados.
  • Proteja os tokens de acesso do usuário: O token de acesso do Logto do usuário é a chave para recuperar tokens de terceiros. Proteja-o adequadamente.
  • Audite o acesso à API: Registre quando seu agente de IA acessa APIs de terceiros para troubleshooting e conformidade.
Armazenamento de tokens de terceiros Conectores sociais Login social Account API