You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

RealSurvivers

User / Kunde

  • "RealSurvivers" started this thread

Posts: 15

  • Send private message

1

Monday, December 26th 2016, 1:27pm

Code?

Ich fühle mich gerade ziemlich blöd diese Frage zu stellen, aber ich verstehe nicht wie ich die API nutzen kann.
Ich möchte sie über Java abrufen können, verstehe aber nur Bahnhof.
Habe jetzt eine Anwendung registriert weiß nun aber nicht mehr weiter.

ketrwu

Moderator

  • "ketrwu" is male

Posts: 1,430

Thanks: 2

  • Send private message

2

Monday, December 26th 2016, 1:53pm

Hallo RealSurvivers,

die offiziellen SDKs von Nitado setzen voraus, dass du bereits einen Access-Token erzeugt hast.
Um diesen Access-Token zu generieren benötigst du einen Weg den authorization_code zu empfangen. Dafür musstest du beim Erstellen deiner Applikation auch eine Redirect-URI angeben. In deinem Fall von Java wäre das der Localhost, wenn du einen Webserver öffnest.

Ein kleines Beispiel für das Beziehen eines Access-Tokens hat Tyrola hier schon mal verdeutlicht: Authentifizierung?
Allerdings in PHP.

Für Java kann ich dir das Spark-Framework empfehlen mit welchem du einen lokalen Webserver auf dem Endgerät der Nutzer öffnen kannst um so den authorization_code zu erhalten, welchen du gegen einen Access-Token eintauschen musst. (Über den /token Endpoint)


Ggf. werd ich gleich nochmal ein kleines Beispiel in Java anhängen.

Mit freundlichen Grüßen
ketrwu

RealSurvivers

User / Kunde

  • "RealSurvivers" started this thread

Posts: 15

  • Send private message

3

Monday, December 26th 2016, 2:31pm

Hallo ketrwu,
danke dass du so schnell geantwortet hast:
Hallo RealSurvivers,
die offiziellen SDKs von Nitado setzen voraus, dass du bereits einen Access-Token erzeugt hast.
Um diesen Access-Token zu generieren benötigst du einen Weg den authorization_code zu empfangen. Dafür musstest du beim Erstellen deiner Applikation auch eine Redirect-URI angeben. In deinem Fall von Java wäre das der Localhost, wenn du einen Webserver öffnest.

Ein kleines Beispiel für das Beziehen eines Access-Tokens hat Tyrola hier schon mal verdeutlicht: Authentifizierung?
Allerdings in PHP.


Wenn ich das richtig verstanden habe, gebe ich als Weiterleitungs-URL z.B. http://localhost ein? Dafür brauche ich aber einen Webserver:
Für Java kann ich dir das Spark-Framework empfehlen mit welchem du einen lokalen Webserver auf dem Endgerät der Nutzer öffnen kannst um so den authorization_code zu erhalten, welchen du gegen einen Access-Token eintauschen musst. (Über den /token Endpoint)

Hab mir das jetzt heruntergeladen und kann über meinen Browser mir ein "Hello World" anzeigen lassen. Mehr habe ich noch nicht gemacht.
Allerdings kann ich mir nicht erklären warum ich einfach eine get-Methode aufrufen kann die ich noch nirgends geschrieben habe:

Source code

1
get("/hello", (req, res) -> "Hello World, I am here");

Außerdem kann ich das nicht in mein bestehendes Projekt einbinden, weil dann die get-Methode eben nicht funktioniert. Soll das so?
Ggf. werd ich gleich nochmal ein kleines Beispiel in Java anhängen.


Wäre nett wenn du das machen würdest. Ich kann mit den Tutorials im Internet auf English die irgendwelche Fachbegriffe verwenden die ich noch nie gehört habe nix anfangen.

PS: Fühle mich gerade echt blöd ;( Hoffe ich bekomm das noch auf die Reihe

MFG RealSurvivers

ketrwu

Moderator

  • "ketrwu" is male

Posts: 1,430

Thanks: 2

  • Send private message

4

Monday, December 26th 2016, 2:57pm

Also soweit hast du mich schon richtig verstanden. Allerdings würde man den Webserver auf einem anderen Port zB. 8080 öffnen. Die Redirect-URI würde diesen Port also beinhalten "http://localhost:8080".

Du kannst diese "get"-Methode und viele weitere aus Spark aufrufen, weil du sie vorher statisch importiert hast. Mehr zu static imports findest du hier.
Solange dein bestehendes Projekt auch Maven nutzt kannst du Spark auch dort problemlos einsetzen.

Kurz schon mal ein paar Worte zu Spark:
Die "get"-Methode bezeichnet die HTTP-Methode sowie den URL-Pfad der nötig ist um den "Hallo Welt"-Code zum Ausführen zu bringen.

Leider habe ich grade meinen PC neu aufgesetzt und meine Entwicklungsumgebung noch nicht am Start, das Beispiel wird also noch etwas dauern :D

RealSurvivers

User / Kunde

  • "RealSurvivers" started this thread

Posts: 15

  • Send private message

5

Monday, December 26th 2016, 4:46pm

Hmm.. wenn du später nochmal zeit hast kannst du das nochmal für blödis wie mich step für step aufschreiben
Sry wenn ich dich nerve xD

ketrwu

Moderator

  • "ketrwu" is male

Posts: 1,430

Thanks: 2

  • Send private message

6

Tuesday, December 27th 2016, 12:12am

Aaaalso, ich hab mal ein kleines Beispiel zusammen geschrieben: Beispiel
Im Grunde ist das eine "ready-to-use" Klasse.

Nochmal eine kleine Erläuterung zum OAuth Flow:
  1. Du leitest deinen User auf die OAuth Authorize-Seite von Nitrado weiter. Dort muss dein User akzeptieren, dass du Zugriff auf seinen Account haben darfst [Beispiel]
  2. Nitrado sendet dir danach einen authorization_code an die angegebene Redirect-URI [Beispiel]
  3. Deine Software sendet einen Request an Nitrado um aus dem authorization_code einen Access-Token zu machen [Beispiel]
  4. Diesen Access-Token solltest du sicher abspeichern und nicht bei jedem Start den User erneut durch Schritt 1-3 jagen. Der Access-Token wird nicht nach einer bestimmten Zeit ungültig, der Refresh-Token ist daher eher unwichtig
  5. Nun kannst du das Nitrado SDK für Java verwenden. [Beispiel]

Mein Beispiel deckt das alles mit Hilfe eines lokalen Webservers ab, der auch die Redirect-URI bereit stellt.
Wenn du das Beispiel mal ausprobieren möchtest,
  • clone das Git-Projekt
  • füge "http://localhost:1337/callback" zu deiner Anwendung bei Nitrado als Redirect-URI hinzu.
  • trage deine Client-ID und Secret in die entsprechenden Variablen ein.
  • kompiliere das Projekt: "mvn clean compile assembly:single"
  • führe das Programm aus und öffne "http://localhost:1337/login" im Browser

This post has been edited 1 times, last edit by "ketrwu" (Dec 27th 2016, 12:23am)


RealSurvivers

User / Kunde

  • "RealSurvivers" started this thread

Posts: 15

  • Send private message

7

Wednesday, December 28th 2016, 2:11pm

Danke! :)
Hab mir mittlerweile via Postman den Accestoken zustellen lassen. :) Finde es aber gut dass ich jetzt auch einen weg habe dass über java zu machen.
Bis jetzt habe ich mir immer nur die Webseite "anzeigen" lassen, die angezeigt wurde wenn man diese Url in den Browser eingibt, und habe diese mir als String ausgeben lassen und dann parsen lassen.
Du machst das ganze ja über die Nitrapi Klasse, oder?
Wie bekomme ich die in mein Projekt?
Bis jetzt hab ich die externen sachen immer über maven mit <dependency> und so in die pom.xml eingefügt? Aber ich habe die Daten ja nicht..
Kann ich die jar einfach so einfügen?

EDIT:
Wie bekomme ich überhaupt die jar?

EDIT 2:
Ist das die korekkte dependency? Ist die, die in deinem Projekt drinne ist.

Source code

1
2
3
4
5
<dependency>
            <groupId>com.github.nitrado</groupId>
            <artifactId>Nitrapi-Java</artifactId>
            <version>master</version>
</dependency>


Ich bekomme aber einen Fehler in eclipse:
Missing artifact com.github.nitrado:Nitrapi-Java:jar:master

This post has been edited 2 times, last edit by "RealSurvivers" (Dec 28th 2016, 2:32pm)


ketrwu

Moderator

  • "ketrwu" is male

Posts: 1,430

Thanks: 2

  • Send private message

8

Thursday, December 29th 2016, 9:30am

Da Nitrado leider keine eigene Maven-Repo für das Java SDK hat, habe ich mir Jitpack zur Hilfe genommen, womit man jedes Maven-Projekt auf Github direkt als Abhängigkeit hinzufügen kann.
Damit das geht und deine Fehlermeldung verschwindet, brauchst du allerdings noch die Repository in der pom.xml: [So wie hier]

Tyrola

Nitrado.net

  • "Tyrola" is male

Posts: 318

Location: Bielefeld

Occupation: Lead Software Engineer

Thanks: 1

  • Send private message

9

Thursday, December 29th 2016, 10:56pm

Hallo,

ich muss mich da kurz einklinken, die Access Tokens werden seit einiger Zeit nach 30 Tagen expiren. Den Refresh Token benötigt man nun inzwischen also schon.
Die Tokens niemals expiren zu lassen, war uns nach reichlicher Überlegung doch etwas zu unsicher. Sicherheit vor Bequemlichkeit.

Liebe Grüße

iSEVEN

User / Kunde

  • "iSEVEN" is male

Posts: 1,431

  • Send private message

10

Tuesday, February 14th 2017, 9:29pm

@Tyrola
Bei einigen Diensten laufen die nach 10 Minuten ab. Fände ich dann doch besser und sicherer.


Gesendet von iPhone mit Tapatalk

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net