我非常惱怒。我正在嘗試使用Java中的Google App Engine作爲服務器爲Android構建基於回合的多人在線遊戲。來自Android客戶端的AccountManager中的AuthToken不再工作
他們看起來很合適。 Android需要Google帳戶,而GAE使用Google帳戶進行身份驗證,同時免費且可擴展。
因此,在節假日之前,我可以使用Android 2.0中新的AccountManager API從我的Android客戶端獲取身份驗證到我的GAE應用程序。下面的代碼可以訪問用戶的谷歌帳戶的authToken,然後用它進行身份驗證,從而使用戶不必手動輸入他們的帳戶的用戶名和密碼:
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();
當時我能夠追加將生成的AuthToken字符串轉換爲適當的URL並獲取一個有效的cookie,然後我可以使用它來處理所有進一步的請求。只有一件事,上週某個時候它停止了爲我工作。現在,當我嘗試使用上述代碼中的AuthToken時,我沒有得到返回的cookie,並且我的代碼爲缺少的cookie拋出了NullPointerException。
當我回到舊的方式,當用戶手動輸入他們的Google用戶名和密碼,我從「https://www.google.com/accounts/ClientLogin」得到AuthToken時,它工作得很好。
請告訴我,有人使用用戶手機上Google帳戶的AuthToken爲Google App Engine應用程序構建了一個Android客戶端,並告訴我爲什麼這不再起作用。
我真的很想做這個工作。我的選擇是要求用戶輸入他們的憑證(這是笨重的,他們不應該這樣做的),或者與服務器的另一個解決方案一起使用。
在此先感謝。
我們可以在運行谷歌的API的模擬器測試呢? – Gopinath 2011-02-21 09:35:35
對於那些想知道「合適的URL」是什麼以及如何「獲取有效的cookie」的人來說,它在[本博客文章](http://blog.notdot。net/2010/05 /從Android應用程序進行身份驗證的應用程序引擎),也包括使authToken無效 – thomas88wp 2012-12-18 17:09:06