Funktion User.getUserId () in Cloud-Endpunkt api gibt null für ein Benutzerobjekt zurück, das nicht null ist

Ich habe ein Problem damit, die Userid für eine Cloud-Endpunkt-Methode zu bekommen. Ich habe oauth2 Authentifizierung in meinem Android-Client verwendet und übergeben die Anmeldeinformationen zu meinem Service. Die unten ist ähnlich wie meine Methode aussieht (vereinfacht, um es klarer zu machen).

Ich stelle fest, dass das Problem 8848 für Python sehr ähnlich zu diesem Problem ist.

  • Android anklickbares Widget mit ListView nicht auf ListItems anklickbar
  • Force Wi-Fi-Netzwerk für Drittanbieter-Apps
  • Android: Bug mit ThreadSafeClientConnManager Herunterladen von Bildern
  • Android-Leinwand ändern einige Pixel Farbe
  • Kann nicht C ++ - Header wie Vektor in Android NDK enthalten
  • Bildansicht anzeigen aus Dateipfad?
  • Ist das gleiche Problem auch bei Java-API? Die Methode

    public SuccessCode doSomething(WireFormat wire, User user){ log.info("User id: "+user.getUserId()); log.info("Federated identity: "+user.getFederatedIdentity()); log.info("Email address: "+user.getEmail()); } 

    Wird null für föderierte Identität und userId anzeigen, obwohl Anmeldeinformationen im androiden Client oauth2 Authentifizierung durchgeführt haben. Die E-Mail-Adresse wird im Protokoll korrekt angezeigt. Dies ist alles auf eine eingesetzte Anwendung btw.

    Jemand hat noch andere Vorschläge, was falsch ist? Irgendwelche bekannten Problemumgehungen für das Problem? Ich habe die in https://developers.google.com/appengine/docs/java/endpoints/consume_android#making-authenticated-calls vorgeschlagene Methode befolgt, um meinen androiden Client einzurichten.

  • Android: Warum machen Handler ein Runnable?
  • Android Gradle fusioniert Values.xml verwendet falschen Namespace
  • Wie Autoincrement VersionCode in Android Gradle
  • Wie kann man GeoFire-Koordinaten zusammen mit anderen Elementen in der Firebase-Datenbank speichern?
  • Setzen Sie eine globale Variable in gradle, die in manifest-Datei verwenden können
  • OpenCV undefinierte Referenzen
  • 2 Solutions collect form web for “Funktion User.getUserId () in Cloud-Endpunkt api gibt null für ein Benutzerobjekt zurück, das nicht null ist”

    Sie sind richtig, dass Ausgabe 8848 die gleiche Ursache ist. Das zugrunde liegende Problem ist sprachlich-agnostisch und beeinträchtigt beide Laufzeiten. Im Moment sollten Sie nicht erwarten, dass das Benutzer-ID-Feld in einem User , das über das Methodenargument in Endpunkte übergeben wurde, gefüllt ist.

    Eine super suboptimale Workaround besteht darin, das User Objekt auf dem Datenspeicher zu bestehen und es wieder zu lesen. Das neu gelesene Objekt hat die Benutzer-ID enthalten.

    Ich folgte dem gleichen Dokumentenreferenz in der Frage und hatte das gleiche genaue Problem.

    Schließlich bekamen die Endpunkte mit OAuth2, indem sie folgendes tun:

    Es gab ein Update für Google Play Services, auf das ich aktualisiert habe; Jetzt auf Version 15 (Android SDK).

    Die Endpunktdokumentation wurde aktualisiert, um festzustellen, dass Sie die Google Plus-APIs für Ihre Anwendung aktivieren sollten, auch wenn Sie nur den Userinfo.email-Bereich für Ihre App-Engine-Endpunkte verwenden. Ich habe das über die Cloud Console gemacht.

    Auch endlich gab es eine neue Notiz, die besagt, dass OAuth2 nicht vom Emulator arbeitet. Ich habe das bestätigt. Ich bekomme immer noch den Null-User-Fehler von einem Android-Emulator, auch wenn ich auf die Produktions-App-Engine zeige. So kann ich nur noch Endpunkte von einem echten Gerät testen.

    Ich konnte bestätigen, dass ich alle drei der oben genannten Schritte benötigte.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.