origin, wenn Sie den Link erstellen, öffnen Sie
die zurückgegebene url in einem Popup und hören Sie zu. Mehr ist nicht nötig, und für Links, die
ohne origin erstellt wurden, ändert sich nichts — sie verhalten sich genau wie bisher.
Sie verwenden das eingebettete Widget? Dann ist das bereits
für Sie verdrahtet. Das Skript empfängt diese Events und reicht sie mit entferntem
connect:-Präfix an connect.on("success", …) weiter — kein message-Listener, keine
Origin-Prüfung, kein popup.closed-Polling zu schreiben. Diese Seite ist das darunterliegende
Wire-Protokoll und das, wogegen Sie bauen, wenn Sie das Fenster besitzen: Direct Mode oder
ein Popup, das Sie selbst öffnen.Events werden nur an die exakte
origin gesendet, die Sie auf dem Link gesetzt haben, und nur an
das Fenster, das das Popup geöffnet hat. Prüfen Sie in Ihrem Listener trotzdem immer
event.origin: Jede Seite kann eine Message an Ihr Fenster senden, und die Origin ist der
einzige Teil einer Message, der nicht gefälscht werden kann.Die Events
Jede an Ihre Seite gesendete Message ist ein Objekt der Form{ source: "ayrshare", version: 1, event, ... } und trägt network, wann immer sich das Event auf
eines bezieht. Zwei Events tun das nicht: ein connect:closed von der gehosteten
Verknüpfungsseite, wo es bedeutet, dass Ihr Nutzer auf „Done“ gedrückt hat, statt dass eine
einzelne Verbindung endete, und das connect:ready des Widgets (siehe unten). Die Ergebnisse, die
Ihr eigener Code synthetisiert — ein blockiertes Popup oder ein von Ihrem Nutzer geschlossenes
Fenster —, kommen nicht von uns und tragen nur das, was Sie ihnen mitgeben.
Das eingebettete Widget weicht bei einem Event ab. Sein
ready
kündigt an, dass ein Slot bereitsteht, statt etwas über ein Netzwerk auszusagen, es trägt also
kein network — während das ready des Popups das Netzwerk benennt, für das es geöffnet wurde.
Wenn Sie beide Oberflächen mit einem Listener bedienen, lesen Sie network bei ready defensiv.Das Widget fügt außerdem einen cancelled-Grund hinzu, den diese Oberfläche nie sendet:
superseded, wenn ein zweiter popup()-Aufruf einen noch laufenden Versuch ersetzt. Hier gibt
es ein Fenster und ein Ergebnis, es gibt also nichts zu ersetzen.
Genau eines von
connect:success, connect:error oder connect:cancelled kommt pro Verbindung
an. connect:closed gehört nicht dazu — es folgt, um Ihnen mitzuteilen, dass sich das Popup
absichtlich geschlossen hat.
connect:success wird erst gesendet, nachdem das Konto gespeichert wurde, sodass ein
GET /user direkt danach das verbundene Konto bereits anzeigt.
Das Popup bleibt nach
connect:error geöffnet, damit Ihr Nutzer lesen kann, was schiefgegangen
ist. Nach connect:success und connect:cancelled schließt es sich selbst. Hängen Sie
&autoClose=false an die URL an, um es beim Debuggen in jedem Fall offen zu halten.Zuhören
Zwei Dinge, die dieses Snippet tut und die leicht vergessen werden: Es prüftevent.origin, und es
achtet auf ein Popup, das Ihr Nutzer von Hand geschlossen hat — ein geschlossenes Fenster kann
nichts mehr senden, Polling ist also der einzige Weg, es zu bemerken.
Fehler
connect:error trägt dieselben Codes wie der Rest der API — ein Code, den Sie hier sehen,
bedeutet also das, was er überall sonst bedeutet. Der eine, der spezifisch für diese Oberfläche
ist:
Alles andere ist ein Fehler des sozialen Netzwerks selbst, gemeldet mit dem Code, den dieser
Fehler ohnehin hat — zum Beispiel
322 für ein Instagram-Autorisierungsproblem, was auch ein
Konto einschließt, das noch Personal statt Professional ist.
Ein toter Link kommt anders an
Ein Link, der abgelaufen, widerrufen oder unbekannt ist, wird verweigert, bevor die Seite erfahren kann, wohin Events zu senden sind — sie kann also keines senden. Ihr Nutzer sieht den Grund und dessen Code auf dem Bildschirm, und Ihre Seite hörtconnect:cancelled, wenn er das
Fenster schließt.
Um die Fälle zu unterscheiden, pollen Sie
Eine Link Session abrufen: Es meldet expired und revoked
verbindlich und gibt 502 für einen Link zurück, der nicht existiert.
Wenn Sie lieber kein Popup verwalten möchten
Zwei Optionen, und nur die zweite verzichtet auf Events. Lassen Sie das Widget das Fenster besitzen. Das eingebettete Widget öffnet und überwacht es für Sie und liefert jedes Event oben an Ihre Handler. Sie erhalten weiterhinsuccess in dem Moment, in dem ein Konto
gespeichert ist; Sie schreiben nur nicht die Verkabelung. Seine Frames bedeuten außerdem, dass die
meisten Netzwerke überhaupt kein Popup öffnen, bis zum Login des Netzwerks selbst.
Pollen Sie stattdessen. Wenn ein Popup wirklich nicht verfügbar ist — eine servergerenderte App
oder eine mobile App, die den Link im Systembrowser öffnet —, pollen Sie
Eine Link Session abrufen. Es meldet completedAt und
completedNetworks, sobald ein Konto gespeichert ist, also im selben Moment, in dem
connect:success gesendet worden wäre. Telegram schließt immer auf diesem Weg ab, da es außerhalb
des Browsers und ohne jeden Browser-Callback abgeschlossen wird.