Sono abbastanza esasperato. Sto tentando di creare un gioco online multiplayer a turni per Android utilizzando Google App Engine in Java come server.AuthToken da AccountManager nel client Android non più funzionante
Sembrano una misura perfetta. Android richiede un account Google e GAE utilizza un account Google per l'autenticazione, pur essendo gratuito e scalabile.
Quindi prima delle vacanze sono riuscito a ottenere l'autenticazione per la mia app GAE dal mio client Android utilizzando la nuova API AccountManager in Android 2.0. Il seguente codice permette di accedere alla authtoken di account Google dell'utente e quindi utilizzarlo per l'autenticazione, in modo che l'utente non deve inserire manualmente il nome utente e password dell'account:
AccountManager mgr = AccountManager.get(this);
Account[] accts = mgr.getAccountsByType("com.google");
Account acct = accts[0];
AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "ah", null, this, null, null);
Bundle authTokenBundle = accountManagerFuture.getResult();
String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString();
Mi è stato poi in grado di accodare la stringa AuthToken risultante per l'URL appropriato e ottenere un cookie valido che potrei quindi utilizzare per tutte le ulteriori richieste. L'unica cosa è che, qualche volta la settimana scorsa, ha smesso di funzionare per me. Ora, quando provo a utilizzare AuthToken dal codice precedente, non viene restituito un cookie e il mio codice genera una NullPointerException per il cookie mancante.
Quando torno alla vecchia maniera, quando l'utente inseriva manualmente il nome utente e la password Google e ottengo AuthToken da "https://www.google.com/accounts/ClientLogin", funziona perfettamente.
Per favore dimmi che qualcuno ha creato un client Android per un'app di Google App Engine utilizzando AuthToken dall'account Google sul telefono dell'utente e mi fornisce un indizio sul perché questo non funziona più.
Mi piacerebbe davvero farlo funzionare. Le mie alternative consistono nel richiedere all'utente di inserire le proprie credenziali (che è goffo e che non dovrebbero avere), o di andare con un'altra soluzione per il server.
Grazie in anticipo.
Possiamo provare questo su un emulatore in esecuzione API di Google? – Gopinath
Per coloro che si chiedono quale sia "l'URL appropriato" e come "ottenere un cookie valido", è trattato in modo preciso in [questo post del blog] (http: //blog.notdot.net/2010/05/Authenticating-contro-App-Engine-from-an-Android-app), che copre anche l'invalidazione dell'autentToken – thomas88wp