Qual superfície você quer
Três formatos, e os dois primeiros são a mesma integração. Esta página é a que você constrói por conta própria.O modo direto é o popup da terceira linha sem o nosso script. Se a sua página pode carregar o script, o
widget faz tudo desta página por você — ele mesmo abre e
observa o popup, e também pode incorporar frames. O modo direto é o que você quer quando sua
página não pode carregar um script de terceiros, ou quando a superfície é um app nativo em vez de um navegador.

Seu botão, sua página. O popup é a única coisa nossa que seu usuário vê, e apenas pelo tempo de que a rede precisa.
O que você constrói
Quatro passos. O primeiro é no seu servidor, os demais são na sua página.1
Crie uma sessão para uma rede
A partir do seu backend, chame
Criar uma Link Session com Você recebe de volta uma
mode: "connect", o
network e o origin em que a sua página roda.Your backend
url apontando para uma página de conexão de rede única, e nenhum token — o token está
dentro da URL. Trate a URL inteira como uma senha: ela autentica seu usuário no User
Profile dele.2
Abra-a no handler de clique, de forma síncrona
O popup precisa ser aberto por
window.open no próprio handler de clique. Um navegador só
permite um popup enquanto ainda está processando o clique do seu usuário, e essa permissão não
sobrevive a um await — então buscar a URL primeiro e abri-la no callback é confiavelmente
bloqueado como popup.Busque a URL quando você renderiza o botão, ou quando seu usuário passa o mouse sobre ele. Na hora do clique você
já deve tê-la.Your page
3
Ouça o desfecho
Como você passou
origin, o popup envia um evento à sua página para cada coisa que
acontece nele: connect:success, connect:error, connect:cancelled e eventos de progresso
no meio. Exatamente um desses três chega por conexão.Eventos de conclusão de vinculação tem a tabela completa de eventos e um
listener pronto para copiar e colar — listenForOutcome acima é esse snippet. Duas partes dele são fáceis de
deixar de fora e as duas causam bugs reais:- Verifique
event.origincontra a origem da URL que você abriu. Qualquer página pode enviar uma mensagem à sua janela, e a origem é a única parte de uma mensagem que não pode ser falsificada. - Faça polling de
popup.closed, com uma pequena janela de tolerância antes de concluir qualquer coisa. Um popup que seu usuário fechou manualmente não envia absolutamente nada, e sem a janela de tolerância uma conexão bem-sucedida pode ser reportada como cancelada.
4
Trate cada desfecho
Notas por rede
A maioria das redes é um popup e nada mais: seu usuário clica, autoriza na rede, e o popup fecha. Estas são as exceções que valem conhecer antes de construir.O X exige suas próprias API keys
O X exige suas próprias API keys
O X em modo direto usa suas credenciais de X Developer App, fornecidas ao criar a
sessão como os cabeçalhos
X-Twitter-OAuth1-Api-Key e X-Twitter-OAuth1-Api-Secret em
Criar uma Link Session.Uma sessão criada para twitter ou x sem esses cabeçalhos é recusada quando o popup
abre: seu usuário é informado de que a conexão não está disponível e não vê formulário algum, e sua página
recebe connect:error com uma message e sem code. Isso é deliberado. A credencial
ausente é sua, não do seu usuário, e usuários finais nunca devem ser solicitados a digitar suas API keys.Compare com o Bluesky, onde a senha de app é uma credencial do próprio usuário final — essa a
página de conexão coleta, sim, em um formulário dentro do popup.O Facebook mostra um botão antes do login da Meta
O Facebook mostra um botão antes do login da Meta
network: "facebook" mostra um único botão no popup, e o login da própria Meta abre a partir
desse clique — a Meta exige que seu login seja iniciado por um clique dentro da página que hospeda seu
SDK. Seu usuário clica duas vezes em vez de uma; nada mais difere.O Instagram se comporta da mesma forma quando é vinculado via uma Página do Facebook — isto é, quando a
sessão carrega instagramLinkMethod: "facebook", ou quando a configuração de
Instagram Login da sua conta seleciona esse
fluxo. Com o Instagram Login direto não há botão extra.Bluesky e Telegram mostram conteúdo na página, não um redirecionamento
Bluesky e Telegram mostram conteúdo na página, não um redirecionamento
Nenhum dos dois envia seu usuário a um login de rede. O popup renderiza conteúdo: um formulário de
handle e senha de app para o Bluesky, e um código a ser usado para o Telegram. Os eventos de desfecho são os
mesmos em qualquer caso.O X não pertence a esse grupo. Com as suas chaves na sessão ele conclui sem pedir
nada ao seu usuário, e sem elas é recusado — veja acima.
O Telegram conclui fora do fluxo
O Telegram conclui fora do fluxo
O Telegram mostra um código em vez de redirecionar para qualquer lugar, e a conexão conclui quando seu
usuário usa esse código — depois que o popup já se foi. Não há evento de navegador a esperar, então faça polling em
Consultar uma Link Session e observe
completedNetworks.Facebook Groups não pode ser conectado desta forma
Facebook Groups não pode ser conectado desta forma
Facebook Groups não é um alvo de vinculação, então
network: "fbg" retorna code: 508 quando você cria
a sessão.O WhatsApp está disponível em modo direto. Ele abre o Embedded Signup da Meta no popup, e os
eventos de desfecho são os mesmos de qualquer outra rede.Apps nativos
Um app nativo abre a mesmaurl, no navegador do sistema, e descobre o resultado fazendo polling em
Consultar uma Link Session. Defina origin como o seu esquema
personalizado (myapp://connected) para que a página tenha um caminho de volta para o seu app; um esquema
personalizado não pode receber eventos, porque não há janela de navegador para a qual enviá-los.
- iOS —
ASWebAuthenticationSessionouSFSafariViewController. - Android — Chrome Custom Tabs.
O que o modo direto exige
- O Max Pack. Criar uma sessão em modo connect sem ele retorna
code: 504, seja lá o que mais a requisição diga. - Um
originem cada sessão. Não há allowlist nem etapa de registro — você o envia por chamada. Omiti-lo retornacode: 505; um valor que não é uma origemhttps, um esquema personalizado ouhttp://localhostretornacode: 506. - Um
networkque sua conta tenha habilitado. Um nome não reconhecido retornacode: 508; um reconhecido que sua conta não habilitou retornacode: 509, que você pode corrigir na sua página Social Networks. - Não
allowedSocial. Ele não pode ser combinado comnetwork(code: 507) — uma sessão de rede única já é sua própria allowlist.
Próximos passos
Eventos de conclusão de vinculação
Cada evento que o popup envia, e o listener para recebê-los.
Relacionados
Criar uma Link Session
Os parâmetros
mode, origin e network, e os formatos de resposta.Consultar uma Link Session
Faça polling pela conclusão quando você não pode usar um popup.