Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Authentication (redirect uri) ??

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Authentication (redirect uri) ??

    This topic has been deleted. Only users with topic management privileges can see it.
    • Newpicsel
      Newpicsel last edited by Newpicsel

      Moin Freunde,

      es geht um folgende authorization von Netatmo:
      https://dev.netatmo.com/apidocumentation/oauth

      ich bin etwas überfragt…
      Wie bekomme ich es hin, dass sich aus iobroker heraus beim jeweiligen Benutzer ein Link im Browser öffnet?

      Ich würde es über eine Blockly Funktion umsetzen wollen, welche über ein trigger ausgelöst wird.
      Ich weiß leider nicht so recht wie die Funktion genau aussehen muss:

      Window.open(url, "_blank");
      

      (url ist eine variable die von außen gefüttert wird.)
      Funktioniert natürlich so einfach nicht 🤣
      Bekomme direkt ein "ReferenceError: window is not defined".

      Außerdem müsste ich von der zurückgegeben url nach dem bestätigen einen Code extrahieren (also diese url wieder zurück in mein Blockly bekommen).

      Bin über jede Hilfe dankbar! 🙏

      Great SUN OliverIO 2 Replies Last reply Reply Quote 0
      • Great SUN
        Great SUN @Newpicsel last edited by

        @newpicsel Willst Du das für mehrere User machen, oder einen neuen Adapter schreiben?
        Sonst müsstest ja nur einmal den OAuth-Token holen.

        1 Reply Last reply Reply Quote 0
        • Newpicsel
          Newpicsel last edited by

          Moin @great-sun

          ja genau, es soll für mehrere Benutzer sein.
          Einen Adapter will ich in Zukunft auch gerne draus machen, dafür muss ich mich allerdings noch etwas schlau lesen.

          Ich hab seit ein paar Jahren bereits ein Blockly laufen welches ähnlich wie ein Adapter arbeitet, dieses kann jeder verwenden.
          Allerdings wurde die Methode der Tokenabfrage geändert, vorher wurde dieser via Benutzername und Passwort direkt angefordert, nun muss sich via Website angemeldet werden, wodurch ein Code generiert wird mit dem dann ein Token angefordert werden kann bzw. muss.

          Um dies für die Benutzer einfach und bequem zu gestalten, möchte ich diese Möglichkeit auch verwenden, außerdem lerne ich bereits viel aus dieser Arbeit.

          Ich muss also einen Link in einem separaten Browserfenster öffnen und nachdem man sich dort erfolgreich angemeldet hat, die url auswerten um den Code zu extrahieren… 🤯

          Great SUN 1 Reply Last reply Reply Quote 0
          • Great SUN
            Great SUN @Newpicsel last edited by

            @Newpicsel wie hast Du es denn bisher gemacht, macht ja wenig Sinn jetzt alles neu zu machen. Vorschlag: Wir machen mal eine Session, in der Du zeigst, was Du da gemacht hast und dann überlegen wir gemeinsam, wie man das jetzt anpasst.
            Das Ergebnis stellen wir dann hier wieder online (sofern das so passt für Dich).

            Newpicsel 1 Reply Last reply Reply Quote 0
            • Newpicsel
              Newpicsel @Great SUN last edited by

              @great-sun

              Unter dem Link oben ist auch noch die alte Methode aufgelistet (grand_type=password), vorher habe ich per "curl" Benutzerdaten wie Passwort übermittelt und die Token zurück bekommen, dies geht aber mittlerweile nicht mehr!

              Nun muss wie gesagt ein Link aufgerufen werden, der im Browser geöffnet werden muss, wenn man sich nun dort angemeldet hat, wird man auf eine "redirect_uri" (eigene url) weitergeleitet, an der dann der Code angehängt ist, den man wiederum benötigt um ein Token (per POST Methode) anzufordern.

              Das Problem ist nun die URL (um diesen Code anzufordern) im Browser aus iobroker heraus zu öffnen und am Ende eben die übermittelte URL mit dem Code wieder in iobroker zu bekommen.

              Etwas verwirrend oder 😅 aber in dem Link im ersten Post ist es gut von netatmo erklärt.

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @Newpicsel last edited by

                @newpicsel sagte in Authentication (redirect uri) ??:

                Ich würde es über eine Blockly Funktion umsetzen wollen, welche über ein trigger ausgelöst wird.
                Ich weiß leider nicht so recht wie die Funktion genau aussehen muss:
                Window.open(url, "_blank");

                du musst dir bewusst machen, wo welcher code läuft.

                alles im javascript-adapter läuft auf dem server.
                also in node.
                https://de.wikipedia.org/wiki/Node.js
                mit node hat man sozusagen die javascript engine aus dem browser herausgelöst und als server-sprache umgesetzt.
                da da aber jetzt kein browser mehr ist, gibt es gewisse dinge darin auch nicht mehr.
                die globale Variable window ist ein beispiel dafür.

                Wenn du willst, das im browser sich ein fenster öffnet, musst du dafür sorgen, das der clientseitig (also lokal in einem browser fenster) ausgeführt wird.

                wenn du bspw das folgende in ein html widget einträgst

                <a href="https://www.google.de" target="_blank">Click mich</a>
                

                dann wird da ein link erzeugt.
                wenn du noch die url dynamisch machen willst, dann würde das so aussehen

                <a href="{0_userdata.0.test.test1}" target="_blank">Click mich</a>
                

                in den datenpunkt schreibst du dann die volle url rein
                die bindings werden allerdings nur im runtime-modus von vis aufgelöst

                Newpicsel 1 Reply Last reply Reply Quote 0
                • Newpicsel
                  Newpicsel @OliverIO last edited by

                  Guten Morgen @oliverio

                  Danke für deine Nachricht, dass wusste ich tatsächlich nicht und erklärt einiges!

                  Über die VIS hatte ich tatsächlich auch schon nachgedacht, dies würde aber wieder voraussetzen, dass jeder Nutzer dies ebenfalls wieder vorher in die VIS einpflegt, was es für einige wohl erstmal zu kompliziert machen würde.

                  Ich bin aktuell dabei und versuche es komplett über curl Befehle umzusetzen.
                  Spricht das Browserfenster komplett zu umgehen.
                  Bin mir noch nicht sicher ob dies überhaupt möglich ist und am Ende nicht auch den Rahmen eines Blocklys komplett sprengt, aber zumindest ein Ansatz.

                  Sobald ich hier etwas halbwegs brauchbares habe, was auch nur in die richtige Richtung gehen könnte, teile ich es mit euch 😊👍

                  Gruß Peter

                  1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO last edited by

                    @newpicsel

                    Es gibt einen netatmo Adapter
                    Der kann das nicht was du willst?

                    Ansonsten könntest du diese Bibliothek verwenden
                    https://www.npmjs.com/package/netatmo

                    Newpicsel 1 Reply Last reply Reply Quote 0
                    • Newpicsel
                      Newpicsel @OliverIO last edited by

                      @oliverio

                      Doch doch, theoretisch kann der Adapter das schon.
                      Mein Blockly hatte ich erstellt bevor es einen Adapter gab 😅

                      Ich und ein paar weitere Nutzer, nutzen diesen jedoch weiterhin, weil er etwas mehr Funktionen bietet als der Adapter und ich müsste so ohnehin noch ein zusätzliches Blockly erstellen.
                      Das spare ich mir damit und es läuft einfach sehr gut.

                      Einziges Problem ist halt nun die Token Anfrage für neue Nutzer, bei denjenigen, die das Blockly schon vorher genutzt haben (vor der Umstellung) läuft es weiterhin.

                      Außerdem und wohl das wichtigste, es macht mir Spaß daran zu arbeiten und ich lerne sehr viel 😊👍

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      456
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      454
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo