origin lorsque vous créez le lien, ouvrez l’url
retournée dans une popup, et écoutez. Rien d’autre n’est requis, et rien ne change pour les liens
créés sans origin — ils se comportent exactement comme ils l’ont toujours fait.
Vous utilisez le widget intégré ? Tout cela est déjà câblé
pour vous. Le script reçoit ces événements et les transmet à
connect.on("success", …) avec le
préfixe connect: retiré — pas de listener message, pas de vérification d’origine, pas de
polling de popup.closed à écrire. Cette page est le protocole de câblage sous-jacent, et ce sur
quoi vous construisez lorsque c’est vous qui possédez la fenêtre : le mode direct, ou une
popup que vous ouvrez vous-même.Les événements ne sont envoyés qu’à l’
origin exacte que vous avez définie sur le lien, et
seulement à la fenêtre qui a ouvert la popup. Vérifiez quand même toujours event.origin dans
votre listener : 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.Les événements
Chaque message posté à votre page est un objet de la forme{ source: "ayrshare", version: 1, event, ... }, et porte network chaque fois que l’événement
concerne un réseau. Deux événements n’en portent pas : un connect:closed provenant de la page de
liaison hébergée, où il signifie que votre utilisateur a appuyé sur Done plutôt que la fin d’une
connexion, et le connect:ready du widget (voir ci-dessous). Les résultats que votre propre code
synthétise — une popup bloquée, ou une fenêtre que votre utilisateur a fermée — ne viennent pas de
nous et ne portent que ce que vous leur donnez.
Le widget intégré diffère sur un événement. Son
ready annonce
qu’un emplacement est actif plutôt que quoi que ce soit à propos d’un réseau, donc il ne porte
pas de network — tandis que le ready de la popup nomme le réseau pour lequel elle a été
ouverte. Si vous gérez les deux surfaces depuis un seul listener, lisez network de manière
défensive sur ready.Le widget ajoute aussi une raison de cancelled que cette surface n’envoie jamais :
superseded, lorsqu’un second appel à popup() remplace une tentative encore en cours. Ici, il
y a une fenêtre et un résultat, donc il n’y a rien à remplacer.
Exactement l’un de
connect:success, connect:error ou connect:cancelled arrive par connexion.
connect:closed n’en fait pas partie — il suit, pour vous dire que la popup s’est fermée
volontairement.
connect:success n’est envoyé qu’une fois le compte enregistré, donc un
GET /user immédiatement après affiche déjà le compte connecté.
La popup reste ouverte après
connect:error pour que votre utilisateur puisse lire ce qui s’est
mal passé. Elle se ferme d’elle-même après connect:success et connect:cancelled. Ajoutez
&autoClose=false à l’URL pour la garder ouverte dans tous les cas pendant le débogage.Écouter
Deux choses que fait ce snippet et qui sont faciles à omettre. Il vérifieevent.origin, et il
surveille une popup que votre utilisateur a fermée à la main — une fenêtre fermée ne peut rien
envoyer, donc le polling est le seul moyen de s’en apercevoir.
Erreurs
connect:error porte les mêmes codes que le reste de l’API, donc un code que vous voyez ici
signifie ce qu’il signifie partout ailleurs. Le seul spécifique à cette surface :
Tout le reste est l’échec propre au réseau social, rapporté avec le code que cet échec possède déjà
— par exemple
322 pour un problème d’autorisation Instagram, ce qui inclut un compte encore
Personnel plutôt que Professionnel.
Un lien mort arrive différemment
Un lien expiré, révoqué ou inconnu est refusé avant que la page ne puisse apprendre où envoyer les événements, donc il ne peut pas en envoyer. Votre utilisateur voit la raison et son code à l’écran, et votre page entendconnect:cancelled lorsqu’il ferme la fenêtre.
Pour les distinguer, pollez Obtenir une session de liaison : il
rapporte expired et revoked de manière fiable, et retourne 502 pour un lien qui n’existe pas.
Si vous préférez ne pas gérer de popup
Deux options, et seule la seconde renonce aux événements. Laissez le widget posséder la fenêtre. Le widget intégré l’ouvre et la surveille pour vous et délivre chaque événement ci-dessus à vos handlers. Vous recevez toujourssuccess au moment où un compte est enregistré ; vous n’écrivez simplement pas la
plomberie. Ses frames font aussi que la plupart des réseaux n’ouvrent jamais de popup du tout avant
la connexion propre du réseau.
Pollez à la place. Si une popup n’est réellement pas disponible — une application rendue côté
serveur, ou une application mobile ouvrant le lien dans le navigateur système — pollez
Obtenir une session de liaison. Il rapporte completedAt et
completedNetworks dès qu’un compte est enregistré, ce qui est le même moment où
connect:success aurait été envoyé. Telegram se termine toujours de cette manière, puisqu’il se
conclut hors bande sans aucun callback navigateur.