30.10.2013

Google App Engine - Account Login und Datenbank

In meinem letzten Beitrag habe ich angefangen mit der GAE. Wie versprochen möchte ich den Beitrag weiter führen. Heute geht es darum wie man Daten - in unserem Beispiel Username und "Notiz" - in einer NoSQL-Datenbank speichern kann. Außerdem möchte ich zeigen, wie man mit nur wenigen Codezeilen einen Login mit dem Google-Account realisiert.
Als erstes nehmen wir unseren Code und gucken wie wir eine Datenbank hinzufügen. Dazu müssen wir als erstes die "db" importieren. Das packet gibt es in google.appengine.ext. Weiter im Code brauchen wir eine neue Klasse, die von db.Model erbt. Die Objekte in der Datenbank können wir einfach realisieren.
user = db.StringProperty()
Erstellt ein Objekt mit dem Namen "user" vom Typ String. Weitere Datenbanktypen gibt es hier.

Im Code kann dann einfach ein Objekt "data" von der eben erstellten Klasse erben. Der Username und die Notiz erhalten einfach einen Wert wenn man ihnen einen zuweist. Mit put() übergeben wir das ganze in die Datenbank.
Das wars dann eigentlich auch schon fürs speichern. Das sind die Grundlagen, der Rest ist Spielerei :)

Wir möchten natürlich variable Daten speichern. Hierfür erstellen wir eine einfache HTML-Form. Die Daten, die via POST oder GET übergeben werden, die kann man sich einfach mit
self.request.get('name')
holen. In unserem Code können wir dann dem note-DB-Objekt dem Wert von der textarea geben.

Der Login über Google mit dem G-Account erfolgt ebenfalls in ein paar simplen Schritten.
Importiert wird hierbei "users" von "google.appengine.api". Den Usernamen, der ohne Login "None" ist, bekommt man mit
users.get_current_user()
Zu der Login-Page kommen wir in dem wir eine Weiterleitung zu
users.create_login_url()
aufrufen. Der Paramenter ist dabei die Weiterleitung von der Login-Page. In unserem Fall möchten wir wieder zurück. Deshalb wird unsere "URL" übergeben.

Das war dann auch das ganze Hexenwerk. Die Datenbank ist ein einfaches Model, welche Objekte mit verschiedenen Typen erstellen kann. Das automatische Login-System von Google funktioniert ebenfalls in wenigen Schritten.