So verwenden Sie das von GoogleAuthUtil.getToken zurückgegebene Token mit meinem App Engine-Back-End

8

Was ich machen möchte

Ich habe ein einfaches Google App Engine-Backend und eine einfache Android-Anwendung und möchte authentifizierte Anfragen von der Android App an den Server senden. Ich habe über Google Cloud Endpoints gelesen und selbst wenn es eine wirklich gute API ist, habe ich das Gefühl, dass es etwas übertrieben ist, was ich tun möchte. Ich möchte nur eine authentifizierte HTTP-Anfrage machen und den Antworttext erhalten.

%Vor%

Sollte beantworten:

%Vor%

Wenn der Benutzer [email protected] die Anfrage bearbeitet.

Backend-Seite:

Ich habe ein neues App Engine-Projekt erstellt:

%Vor%

und registriert eine Android App ("Zugriff auf APIs direkt von Android"):

%Vor%

Und das erstellt

%Vor%

app.yaml

%Vor%

api.py

%Vor%

Android Seite

%Vor%

Was funktioniert

?

Ich kann meinen Browser benutzen, um

%Vor%

Melden Sie sich als John Doe an und dann

%Vor%

Und ich bekomme

%Vor%

Fantastisch, genau das erwarte ich.

Was nicht funktioniert

Mit Android habe ich alle meine Versuche zu

geführt %Vor%

Wie Sie im Android-Code sehen können, verwende ich GoogleAuthUtil, um ein Token abzurufen, aber ich verstehe nicht wirklich, was ich damit machen soll.

%Vor%

Dann baue ich die Anfrage:

%Vor%

Fügen Sie den Header "Authorization" hinzu:

%Vor%

Ich habe es auch versucht:

%Vor%

Vermutlich fehlt etwas auf Android oder im App Engine-Backend, aber ich verstehe wirklich nicht was. Gibt es eine API, die das vereinfacht?

Es scheint so einfach mit einem Browser ...

TIA

    
alberthier 18.12.2013, 14:29
quelle

1 Antwort

8

Es ist möglich, das Zugriffstoken an Ihre Google App Engine-App (oder eine andere Webanwendung) zu senden (als Inhaber-Token reicht es aus, Anmeldeinformationen weiterzuleiten), Google App Engine erkennt jedoch die " Authorization "Kopfzeile und setzen Sie das Benutzerobjekt für Sie (das ist etwas, Endpoints kann Ihnen helfen).

Sie können das Zugriffstoken selbst über das Anfragekopfobjekt suchen:

%Vor%

Senden Sie das dann an eine Google API, um deren Gültigkeit zu überprüfen und Informationen über diesen Benutzer zu erhalten (ich denke, das schließt E-Mails ein, solange die E-Mail ein Bereich ist, für den Sie ursprünglich nach einem Zugriffstoken gefragt haben).

Weitere Informationen zur Vorgehensweise finden Sie unter Nutzerinformationen über Google API erhalten das.

Sie sollten auch prüfen, ob die Zugriffstoken werden Ihre Anwendung ausgegeben worden ( Ссылка {access_token } - Client-ID in der Antwort) überprüfen -. wenn Sie nicht tun, macht es für eine andere Anwendung sehr einfach, die Genehmigung des Benutzer hat ein Zugriffstoken zu erhalten, um Anrufe an Ihren privaten API machen

Das alles gesagt, ein anderer Mechanismus ist, einen IDToken von Android zu bekommen, und senden Sie das an Ihre Webanwendung - mehr Details finden Sie hier: Ссылка und Ссылка

Beispiel für die Verwendung von Google API Python-Client zum Abrufen von Informationen zu einem ausgestellten Token:

%Vor%     
aeijdenberg 18.12.2013, 18:44
quelle