Guia passo a passo para desenvolver um conector social
A maneira mais rápida de começar é copiar o código de um conector oficial existente e modificá-lo para atender às suas necessidades. Vamos usar o conector do GitHub como exemplo.
Passo 1: Clonar um pacote de conector existente
Em uma pasta de origem do conector, você encontrará os seguintes arquivos:
index.ts
: O arquivo de entrada principal do conector.constant.ts
: As constantes usadas no conector.types.ts
: Os tipos TypeScript usados no conector.index.test.ts
: Os casos de teste para o conector.mock.ts
: Os dados simulados usados nos casos de teste do conector.
Além desses arquivos, você também precisará fornecer um arquivo README.md
para descrever o conector, um logo.svg
(opcionalmente um logo-dark.svg
para uma melhor experiência de usuário no modo escuro) e um arquivo package.json
para definir as informações do pacote npm.
Passo 2: Modificar o arquivo de entrada principal (index.ts)
No arquivo index.ts
, você encontrará a maior parte da lógica do conector. Normalmente, há 4 funções que você precisa implementar:
getAuthorizationUri
: Gerar o URI de autorização para a plataforma social de terceiros. Para o GitHub, seria:https://github.com/login/oauth/authorize?client_id={clientId}&redirect_uri={redirectUri}&state={state}
. Consulte a documentação do desenvolvedor da sua plataforma social alvo para obter o URI correto.authorizationCallbackHandler
: Proteger os valores dos parâmetros retornados no URI de callback de autorização, extrair ocode
de autorização e lidar com possíveis erros.getAccessToken
: Trocar ocode
de autorização por um token de acesso.getUserInfo
: Buscar informações do usuário na plataforma social de terceiros com o token de acesso.
A maioria das outras lógicas comuns já foi tratada no kit de conectores do Logto, o que deve facilitar seu trabalho.
Finalmente, no final do arquivo, você só precisará exportar o objeto do conector, seguindo a mesma estrutura de código do conector do GitHub.
const createGithubConnector: CreateConnector<SocialConnector> = async ({ getConfig }) => {
return {
metadata: defaultMetadata,
type: ConnectorType.Social,
configGuard: githubConfigGuard,
getAuthorizationUri: getAuthorizationUri(getConfig),
getUserInfo: getUserInfo(getConfig),
};
};
Passo 3: Testar o conector
Teste unitário
Primeiro, escreva alguns casos de teste unitário e certifique-se de que as funcionalidades básicas funcionem conforme o esperado.
Teste local
- Configure o Logto no seu ambiente local: Logto oferece várias maneiras de rodar localmente, você pode usar CLI, ou docker, ou até mesmo construir a partir do código-fonte. Confira as documentações para mais detalhes.
- Vincule seu conector personalizado à sua instância Logto: Use o CLI para criar um link simbólico do seu conector para a instância Logto. Mais detalhes.
cd logto
npx @logto/cli connector link -p . - Após vincular o conector, você deve vê-lo na pasta
<logto-root-path>/packages/core/connectors
. - Reinicie sua instância Logto, vá para o Console de Administração do Logto, você deve ser capaz de vê-lo na lista de conectores sociais.
- Configure seu conector em Console > Experiência de login > Inscrição e login > Login social. E experimente em nosso aplicativo de demonstração com o recurso "Visualização ao vivo".