Google OAuth 2.0 aber wie

TheCoder

Mitglied
Hallo zusammen,

ich sitze nun schon seit einigen Tagen an Google OAuth 2.0. Ich bekomme einfach nichts hin. Ich entwickle momentan ein System, für automatisches Video uploaden auf YouTube.
Für die Weboberfläche benutzte ich Apache Wicket, was aber für die Frage unerheblich ist. Wichtig ist nur, das das Programm später auf einem Server laufen soll.
Jetzt zu meinem Problem. Ich habe nur die Login Daten für das Google Konto. Wie bekomme ich mich nun eingeloggt, und kann ein Video Uploaden. Das Uploaden funktioniert soweit auch schon, solange ich die Authentifizierung-Methode von hier nutzte. Wie bekomme ich es aber ohne einen Browser hin?

MFG René
 
Es geht nicht ohne browser, das ist doch der Zweck von OAuth: Der Authorisierungs-Anbieter (in deinem fall Google) übernimmt das prüfen der Zugangsadaten und gibt dir dann ein Access-Token, mit welchem du im Namen des Users agieren kannst. Und um sich bei Google einzuloggen braucht es ein Browserfenster von Google - andernfalls würde der User ja seine Zugangsdaten deiner Anwendung anvertrauen und OAuth ist genau dafür da, das zu unterbinden.
 
Danke für die Antwort.
Wie ist es denn möglich, auf einem Server die Authentifizierung durchzuführen? Gibt es dafür eine andere Methode? Ich fasse mich so kurz, da ich am Handy bin.
 
Nein, es gibt keine andere Methode. Um Zugriff auf Google zu bekommen muss ein Gerät des Users sich mit einem Google-Server verbinden, damit der User sich authentifizieren kann. Und meines wissens nach bietet Google dafür nur 2 Möglichkeiten:

1. Per HTTP auf die OAuth seite
2. Mit dem Google SDK auf Android (aber selbst da bin ich mir nicht sicher, ob das nicht auch ein Aufsatz auf den HTTP Login ist)
 
Um Zugriff auf Google zu bekommen muss ein Gerät des Users sich mit einem Google-Server verbinden, damit der User sich authentifizieren kann.
Wie meinst du das? Er muss sich nur an einem Gerät authentifizieren? Das bedeutet, dass ich einen Client und einen Server haben muss? Oder gibt es einen Ansatz über Apache Wicket die Authentifizierung auf den Client zu bekommen? Ich habe keinen gefunden.
 
Der User hat ein Gerät - seinen Browser, sein Handy, whatever. Mit diesem meldet er sich bei Google an. Damit ist sichergestellt dass nur Google und der User mit den Zugangsdaten in Kontakt kommen. Als "Antwort" auf den Login erhält der User im OAuth Protokoll ein AccessToken, dass er an deinen Server weiterleitet, damit du damit die Google API ansprechen kannst.
Dass der User sich direkt bei Google anmeldet und nicht einen Umweg über deine Anwendung macht ist der Sinn und Zeck von OAuth. Und weil Google eben nur eine Webseite für diesen Schritt anbietet kommst du um die Webseite nicht drumrum.

Jetzt kann man diese Webseite natürlich in eine Anwendung (etwa mit einer WebView unter Android) einbinden.
 
Ach so, also bekomme ich einmalig einen AccessToken vom User und bekomme so einen Zugriff? Also kann ich den AccessToken vom Nutzer abfragen, speichern und so Zugriff bekommen? Ist ja noch einfacher als ein Passwort sicher zu speichern etc.
 
Das mit dem AccessToken ist leider nicht einmalig; das hat ein Ablaufdatum und muss dann erneuert werden. Aber solange der Nutzer noch bei Google eingeloggt ist, muss er nichts mehr machen (passiert alles, ohne das der User das mitbekommt.)

Ja, das ist es - auch das war eine Intention der OAuth-Autoren. Aber auch mit dem AccessToken musst du vorsichtig sein. Solange es gültig ist, kann man damit - im Namen deiner Anwendung! - schabernack treiben. Im besten fall speicherst du es garnicht sondern behälst es nur im RAM. Wenn deine Anwedung beendet wurde und der User sie wieder startet forderst du dann ein neues an (auch das bekommt der User nicht mit, sofern er bei Google eingeloggt bleibt).
 
Somit müsste auch das Handy reichen oder? Das mit der Sicherheit sollte kein Problem sein, da es ein privates Projekt ist und vorläufig nur einmal benutzt wird. Das mit dem neu starten und dann anfordern werde ich integrieren.
 
Ja, richtig. Auf Android muss man ja zwangsläufig ein Google Konto angeben, weshalb das dort immer klappen sollte (vorrausgesetzt du nutzt das SDK, die Google Play Services)
 
vorrausgesetzt du nutzt das SDK, die Google Play Services
Auf einem Linux Server? Ich glaube ich habe dich falsch verstanden. Ich habe gedacht, das man auf irgendeinem Gerät bei Google eingeloggt sein muss.
Um nochmal alles zusammenzufassen:
Auf dem Server muss man sich bei Google anmelden. (Z.B. mit einem Browser)
Ich bekomme einen Access-Token mit dem ich dann Videos uploaden kann.
In regelmäßigen Abständen muss ich mir einen neues holen.
Ist das so in etwa richtig?

Folgende Fragen kommen dadurch:
  • Gibt es alternativen für Server als einen Browser, wie z.B. ein Programm welches das übernimmt?
  • Wie lange ist ein Access-Token gültig?
  • Wie bekomme ich einen neuen Access-Token außer von dem User?
Oder ein anderer Ansatz. Gibt es für Google eine andere Loginmöglichkeit neben OAuth 2.0?
 
Zuletzt bearbeitet:
Ich möchte auf einem Linux Server ein Programm starten, welches Videos auf YouTube hoch lädt. Da es sich bei dem Programm um eine Apache Wicket Applikation handelt, habe ich es mir ursprünglich so vorgestellt, dass der User auf einer Seite die Login Daten angibt und sich das Programm (Applikation) daraufhin anmeldet. Ab dem Zeitpunkt soll das Programm Videos automatisch uploaden können. So war es jedenfalls angedacht. Laut @Tobse ist dies aber so nicht möglich. Ich suche nun nach einer Möglicket dies zu realisieren.
Was mich aber heute Morgen gewundert hat, dass es sogar ein Programm gibt, welches mit den Login Daten hantiert und das noch funktioniert. Link: http://sourceforge.net/projects/sjyt-uploader/

MFG René
 
Zuletzt bearbeitet:
[EDIT]
Was mich aber heute Morgen gewundert hat, dass es sogar ein Programm gibt, welches mit den Login Daten hantiert und das noch funktioniert. Link: http://sourceforge.net/projects/sjyt-uploader/
Das geht schon. Es wiederspricht aber dem Sicherheitskonzept von OAuth und wahrscheinlich nicht von Google offiziell unterstützt.
[/EDIT]

Nein, das SDK funktioniert natürlich nur auf dem Gerät des Benutzers. Machst du eine Webanwendung oder eine App? Im falle einer Webanwendung fällt das SDK flach; im Falle einer App kannst du das SDK benutzen, damit der User die App nicht verlassen muss.

Hier mal eine Grafik zum OAuth-Prozess:
OAuth-Flow.png

Wenn du zum Ablauf noch fragen hast: Googles Dokumentation wird dir weiterhelfen: https://console.developers.google.com/

Wie lange das AccessToken gültig ist, erfährst du, wenn du es von Google abfrägst. Das bewegt sich miesst im bereich von Stunden oder weniger Tage.
Du bekommst ein neues AccessToken gemäß OAuth nur über den User. Es kann sein, dass Google (ausserhalb der OAuth spezifikation!) eine Option anbietet unendlich gültige Tokens zu bekommen oder ein bestehendes zu erneuern; da weiss ich aber bei Google nicht bescheid. Auch hier wird dir die Dokumentation von Google weiterhelfen.
 

Neue Themen


Zurück
Oben