Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. [Gelöst] Cross-site API call in der Admin-Ansicht

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    323

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

[Gelöst] Cross-site API call in der Admin-Ansicht

Geplant Angeheftet Gesperrt Verschoben Entwicklung
4 Beiträge 2 Kommentatoren 329 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • GrizzelbeeG Offline
    GrizzelbeeG Offline
    Grizzelbee
    Developer
    schrieb am zuletzt editiert von Grizzelbee
    #1

    Moin Zusammen,

    ich brauche bitte Hilfe bei folgendem Problem:
    Ich habe einen Adapter (dysonAirPurifier) bei dem zum ordentlichen Login seitens dyson eine 2-Faktor Authentifizierung notwendig ist. Um das zu realisieren möchte ich folgendes implementieren:

    1. User installiert den Adapter
    2. User konfiguriert den Adapter mit Basis-Daten (eMail, Passwort, Land, ...)
    3. User klickt auf einen Button um die 2FA-Daten anzufordern (dafür sind 2 dyson API-Calls notwendig)
    4. User gibt den Code, den er per Mail von dyson erhalten hat in die Config ein und der Adapter ist startfähig.

    Ich suche mir seit Tagen die Finger blutig und probiere Sachen aus, aber nichts will funktionieren.

    • Ich habe versucht das direkt in der index_m.html per fetch() zu machen - scheitere aber an den CORS Richtlinien.
    • Ich habe versucht Code per emit() und sendTo() im Backend aufzurufen um dann die API-Calls einfach mit axios zu machen - aber das Backend läuft ja zu dem Zeitpunkt noch gar nicht. Da gibt es also nichts was ich aufrufen könnte.

    Kurzum: Ich habe keine Idee mehr, wie ich das hinbekommen könnte.
    Kann mir hier bitte jemand ein bisschen zur Seite stehen? Ist ja auch möglich, das ich einfach nur im die komplett falsche Richtung denke.

    UncleSamU 1 Antwort Letzte Antwort
    0
    • GrizzelbeeG Grizzelbee

      Moin Zusammen,

      ich brauche bitte Hilfe bei folgendem Problem:
      Ich habe einen Adapter (dysonAirPurifier) bei dem zum ordentlichen Login seitens dyson eine 2-Faktor Authentifizierung notwendig ist. Um das zu realisieren möchte ich folgendes implementieren:

      1. User installiert den Adapter
      2. User konfiguriert den Adapter mit Basis-Daten (eMail, Passwort, Land, ...)
      3. User klickt auf einen Button um die 2FA-Daten anzufordern (dafür sind 2 dyson API-Calls notwendig)
      4. User gibt den Code, den er per Mail von dyson erhalten hat in die Config ein und der Adapter ist startfähig.

      Ich suche mir seit Tagen die Finger blutig und probiere Sachen aus, aber nichts will funktionieren.

      • Ich habe versucht das direkt in der index_m.html per fetch() zu machen - scheitere aber an den CORS Richtlinien.
      • Ich habe versucht Code per emit() und sendTo() im Backend aufzurufen um dann die API-Calls einfach mit axios zu machen - aber das Backend läuft ja zu dem Zeitpunkt noch gar nicht. Da gibt es also nichts was ich aufrufen könnte.

      Kurzum: Ich habe keine Idee mehr, wie ich das hinbekommen könnte.
      Kann mir hier bitte jemand ein bisschen zur Seite stehen? Ist ja auch möglich, das ich einfach nur im die komplett falsche Richtung denke.

      UncleSamU Offline
      UncleSamU Offline
      UncleSam
      Developer
      schrieb am zuletzt editiert von
      #2

      @grizzelbee sagte in Cross-site API call in der Admin-Ansicht:

      • Ich habe versucht Code per emit() und sendTo() im Backend aufzurufen um dann die API-Calls einfach mit axios zu machen - aber das Backend läuft ja zu dem Zeitpunkt noch gar nicht. Da gibt es also nichts was ich aufrufen könnte.

      Das ist schon der richtige Ansatz. Es gibt immer wieder Adapter, die zuerst gestartet werden müssen um die dann zu konfigurieren. Du kannst theoretisch auch aus dem Admin HTML heraus den Adapter starten, aber ich würde einfach den User darauf hinweisen, dass er zuerst den Adapter starten muss.

      Hier ein Beispiel:
      https://github.com/deMynchi/ioBroker.meteoswiss/blob/2baf382a6350311cff2367e6b67ba2a2471388a7/admin/index_m.html#L38-L43

      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
      ♡-lichen Dank an meine Sponsoren

      GrizzelbeeG 2 Antworten Letzte Antwort
      0
      • UncleSamU UncleSam

        @grizzelbee sagte in Cross-site API call in der Admin-Ansicht:

        • Ich habe versucht Code per emit() und sendTo() im Backend aufzurufen um dann die API-Calls einfach mit axios zu machen - aber das Backend läuft ja zu dem Zeitpunkt noch gar nicht. Da gibt es also nichts was ich aufrufen könnte.

        Das ist schon der richtige Ansatz. Es gibt immer wieder Adapter, die zuerst gestartet werden müssen um die dann zu konfigurieren. Du kannst theoretisch auch aus dem Admin HTML heraus den Adapter starten, aber ich würde einfach den User darauf hinweisen, dass er zuerst den Adapter starten muss.

        Hier ein Beispiel:
        https://github.com/deMynchi/ioBroker.meteoswiss/blob/2baf382a6350311cff2367e6b67ba2a2471388a7/admin/index_m.html#L38-L43

        GrizzelbeeG Offline
        GrizzelbeeG Offline
        Grizzelbee
        Developer
        schrieb am zuletzt editiert von
        #3

        @unclesam sagte in Cross-site API call in der Admin-Ansicht:

        Das ist schon der richtige Ansatz. Es gibt immer wieder Adapter, die zuerst gestartet werden müssen um die dann zu konfigurieren. Du kannst theoretisch auch aus dem Admin HTML heraus den Adapter starten, aber ich würde einfach den User darauf hinweisen, dass er zuerst den Adapter starten muss.

        Okay. Vielen Dank für deine Antwort. Dann setze ich mich mal weiter damit auseinander und werde das so bauen. Immerhin gut zu wissen, dass man nicht in eine falsche Richtung läuft. :)

        1 Antwort Letzte Antwort
        0
        • UncleSamU UncleSam

          @grizzelbee sagte in Cross-site API call in der Admin-Ansicht:

          • Ich habe versucht Code per emit() und sendTo() im Backend aufzurufen um dann die API-Calls einfach mit axios zu machen - aber das Backend läuft ja zu dem Zeitpunkt noch gar nicht. Da gibt es also nichts was ich aufrufen könnte.

          Das ist schon der richtige Ansatz. Es gibt immer wieder Adapter, die zuerst gestartet werden müssen um die dann zu konfigurieren. Du kannst theoretisch auch aus dem Admin HTML heraus den Adapter starten, aber ich würde einfach den User darauf hinweisen, dass er zuerst den Adapter starten muss.

          Hier ein Beispiel:
          https://github.com/deMynchi/ioBroker.meteoswiss/blob/2baf382a6350311cff2367e6b67ba2a2471388a7/admin/index_m.html#L38-L43

          GrizzelbeeG Offline
          GrizzelbeeG Offline
          Grizzelbee
          Developer
          schrieb am zuletzt editiert von Grizzelbee
          #4

          @unclesam

          Ich brauche bitte noch einmal Hilfe ...
          Ich habe da jetzt ein bisschen dran gearbeitet und es funktioniert auch soweit.
          Ich kann die Message im Admin abschicken und sie wird in der main.js von onMessage gefangen und weiter verarbeitet. So weit - so gut.

          Ich benötige aber eine Rückkopplung zurück ins Admin, denn es kann durchaus sein, dass bei der Anfrage, die ich abschicke ein Fehler raus kommt und den möchte ich direkt im Admin präsentieren und nicht nur im Log.

          Wie gelange ich also mit einer Information zurück ins Admin?

          Ich habe versucht eine Exception zu werfen, aber die wird irgendwo im Adapter gefangen und ins Log geschrieben - mehr aber auch nicht.

          Ich vermute das das irgendwie über die im Aufruf erwähnte callback:

          this.socket.emit('sendTo', [adapter,instance].join('.'), 'getDyson2faMail', {email:document.getElementById("email").value, pwd:document.getElementById("Password").value, country:document.getElementById("country").value},function (data) {
                              callback(data);
                          });
          

          laufen müsste, aber die steht mir in onMessage(msg) {...} ja nicht zu Verfügung...

          Ich durchblicke den Mechanismus noch nicht richtig. Hast Du da noch einmal einen Tipp für mich?

          Edit: Ich habe es jetzt verstanden und es funktioniert. DANKE!

          1 Antwort Letzte Antwort
          1
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          744

          Online

          32.5k

          Benutzer

          81.7k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe