Я очень раздражен. Я пытаюсь создать пошаговую многопользовательскую онлайн-игру для Android, используя Google App Engine на Java в качестве сервера.
Они кажутся идеальными. Android требует учетную запись Google, и GAE использует учетную запись Google для аутентификации, будучи свободным и масштабируемым.
Итак, перед каникулами я смог получить аутентификацию в своем приложении GAE с моего Android-клиента, используя новый API AccountManager в Android 2.0. Следующий код позволяет вам получить доступ к AuthToken учетной записи пользователя Google, а затем использовать ее для аутентификации, чтобы пользователю не приходилось вручную вводить имя пользователя и пароль учетной записи:
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, и мой код генерирует исключение NullPointerException для отсутствующего файла cookie.
Когда я возвращаюсь к старому способу, когда пользователь вводил вручную имя пользователя и пароль Google, и я получаю AuthToken от https://www.google.com/accounts/ClientLogin ", он работает нормально.
Скажите, пожалуйста, кто-то там построил клиент Android для приложения Google App Engine, используя AuthToken из учетной записи Google на телефоне пользователя, и дайте мне понять, почему это больше не работает.
Мне бы очень хотелось сделать эту работу. Мои альтернативы требуют, чтобы пользователь вводил свои учетные данные (что неудобно, и что им не нужно делать), или собирается с другим решением для сервера.
Спасибо заранее.