Quelle surface choisir
Trois formes, et les deux premières sont la même intégration. Cette page est celle que vous construisez vous-même.
Votre bouton, votre page. La popup est la seule chose de nous que votre utilisateur voit, et seulement le temps dont le réseau a besoin.
Ce que vous construisez
Quatre étapes. La première est sur votre serveur, les autres dans votre page.Créez une session pour un réseau
mode: "connect", le
network, et l’origin sur laquelle votre page s’exécute.url pointant vers une page de connexion mono-réseau, et aucun
token — le token est à l’intérieur de l’URL. Traitez l’URL entière comme un mot de passe :
elle connecte votre utilisateur à son User Profile.Ouvrez-la dans le gestionnaire de clic, de manière synchrone
window.open dans le gestionnaire de clic lui-même. Un
navigateur n’autorise une popup que tant qu’il est encore en train de traiter le clic de votre
utilisateur, et cette autorisation ne survit pas à un await — donc récupérer d’abord l’URL et
l’ouvrir dans le callback est systématiquement bloqué par le bloqueur de popups.Récupérez l’URL au moment où vous affichez le bouton, ou lorsque votre utilisateur le survole.
Au moment du clic, vous devriez déjà l’avoir.Écoutez le résultat
origin, la popup poste un événement à votre page pour chaque chose
qui s’y produit : connect:success, connect:error, connect:cancelled, et des événements de
progression entre les deux. Exactement l’un de ces trois arrive par connexion.Événements de fin de liaison contient le tableau
complet des événements et un listener à copier-coller — listenForOutcome ci-dessus est ce
snippet. Deux parties de celui-ci sont faciles à omettre et toutes deux causent de vrais bugs :- Vérifiez
event.originpar rapport à l’origine de l’URL que vous avez ouverte. N’importe quelle page peut poster un message à votre fenêtre, et l’origine est la seule partie d’un message qui ne peut pas être falsifiée. - Pollez
popup.closed, avec une courte fenêtre de grâce avant de conclure quoi que ce soit. Une popup que votre utilisateur a fermée à la main n’envoie rien du tout, et sans la fenêtre de grâce une connexion réussie peut être rapportée comme annulée.
Gérez chaque fin
Notes par réseau
La plupart des réseaux, c’est une popup et rien d’autre : votre utilisateur clique, autorise auprès du réseau, et la popup se ferme. Voici les exceptions à connaître avant de construire.X nécessite vos propres clés API
X nécessite vos propres clés API
X-Twitter-OAuth1-Api-Key et X-Twitter-OAuth1-Api-Secret sur
Créer une session de liaison.Une session créée pour twitter ou x sans ces en-têtes est refusée à l’ouverture de la
popup : votre utilisateur est informé que la connexion n’est pas disponible et ne voit aucun
formulaire, et votre page reçoit connect:error avec un message et aucun code. C’est
délibéré. L’identifiant manquant est le vôtre, pas celui de votre utilisateur, et les
utilisateurs finaux ne doivent jamais avoir à saisir vos clés API.Comparez avec Bluesky, où le mot de passe d’application est l’identifiant propre de
l’utilisateur final — celui-là, la page de connexion le collecte bien, dans un formulaire à
l’intérieur de la popup.Facebook affiche un bouton avant la connexion de Meta
Facebook affiche un bouton avant la connexion de Meta
network: "facebook" affiche un unique bouton dans la popup, et la connexion propre de Meta
s’ouvre à partir de ce clic — Meta exige que sa connexion soit lancée par un clic à l’intérieur
de la page qui héberge son SDK. Votre utilisateur clique deux fois plutôt qu’une ; rien d’autre
ne diffère.Instagram se comporte de la même manière lorsqu’il est lié via une page Facebook — c’est-à-dire
lorsque la session porte instagramLinkMethod: "facebook", ou lorsque le paramètre
Instagram Login de votre compte
sélectionne ce flux. Avec Instagram Login direct, il n’y a pas de bouton supplémentaire.Bluesky et Telegram affichent du contenu de page, pas une redirection
Bluesky et Telegram affichent du contenu de page, pas une redirection
Telegram se termine hors bande
Telegram se termine hors bande
completedNetworks.Les groupes Facebook ne peuvent pas être connectés de cette manière
Les groupes Facebook ne peuvent pas être connectés de cette manière
network: "fbg" retourne code: 508
lorsque vous créez la session.WhatsApp est disponible en mode direct. Il ouvre l’Embedded Signup de Meta dans la popup,
et les événements de résultat sont les mêmes que pour tout autre réseau.Applications natives
Une application native ouvre la mêmeurl, dans le navigateur système, et découvre le résultat
en pollant Obtenir une session de liaison. Définissez origin
sur votre schéma personnalisé (myapp://connected) pour que la page ait un moyen de revenir dans
votre application ; un schéma personnalisé ne peut pas recevoir d’événements, car il n’y a pas de
fenêtre de navigateur à laquelle les poster.
- iOS —
ASWebAuthenticationSession, ouSFSafariViewController. - Android — Chrome Custom Tabs.
Ce que le mode direct nécessite
- Le Max Pack. Créer une session en mode connect sans lui retourne
code: 504, quoi que dise le reste de la requête. - Un
originsur chaque session. Il n’y a pas d’allowlist ni d’étape d’enregistrement — vous l’envoyez à chaque appel. L’omettre retournecode: 505; une valeur qui n’est pas une originehttps, un schéma personnalisé ouhttp://localhostretournecode: 506. - Un
networkque votre compte a activé. Un nom non reconnu retournecode: 508; un nom reconnu que votre compte n’a pas activé retournecode: 509, ce que vous pouvez corriger sur votre page Réseaux sociaux. - Pas d’
allowedSocial. Il ne peut pas être combiné avecnetwork(code: 507) — une session mono-réseau est déjà sa propre allowlist.
Étapes suivantes
Événements de fin de liaison
Voir aussi
Créer une session de liaison
mode, origin et network, et les formes de réponse.