Существует ли официальный способ аутентификации для API данных Google на Android с использованием учетных записей AccountManager? - PullRequest
6 голосов
/ 16 августа 2010

Я пытаюсь использовать Google Data API для установленного приложения на Android 2.1. Я не хочу, чтобы пользователь вводил свои учетные данные, если у него уже есть настроенная учетная запись на устройстве. Таким образом, я использую AccountManager с типом учетной записи "com.google".

Но куда идти? Нет примеров от Google о том, как выполнить аутентификацию Google (authTokenType и т. Д.). Есть проект, который пытается это сделать (http://code.google.com/p/google-authenticator-for-android) в общем, но пока безуспешно.

Это может быть так сложно? Это действительно сдерживает приложения, такие как клиенты Google Reader, которые должны запрашивать у пользователя свои учетные данные Google (которые, мы надеемся, никто не дает).

Любые указатели / советы приветствуются.

Ответы [ 3 ]

4 голосов
/ 11 ноября 2010

Да, это возможно.Если у вас есть дескриптор учетной записи Google (как вы описали), вам просто нужно запросить токен авторизации у AccountManager для службы GData.

Если на устройстве Android уже есть токен авторизации (для конкретногоСервис GData, к которому вы пытаетесь получить доступ), он будет вам возвращен.Если нет, AccountManager запросит его и вернет вам.В любом случае вам не нужно беспокоиться об этом, так как AccountManager обрабатывает его.

В следующем примере я использую API таблиц Google:

ArrayList<Account> googleAccounts = new ArrayList<Account>();

// Get all accounts 
Account[] accounts = accountManager.getAccounts();
  for(Account account : accounts) {
    // Filter out the Google accounts
    if(account.type.compareToIgnoreCase("com.google")) {
      googleAccounts.add(account);
    }
  }
AccountManager accountManager = AccountManager.get(activity);

// Just for the example, I am using the first google account returned.
Account account = googleAccounts.get(0);

// "wise" = Google Spreadheets
AccountManagerFuture<Bundle> amf = accountManager.getAuthToken(account, "wise", null, activity, null, null);

try {
  Bundle authTokenBundle = amf.getResult();
  String authToken = authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN);

  // do something with the token
  InputStream response = sgc.getFeedAsStream(feedUrl, authToken, null, "2.1");

}

Надеюсь, это поможет.

1 голос
/ 15 июня 2012

Убедитесь, что вы позвонили GoogleHeaders.setGoogleLogin после аутентификации. Затем вы можете проверить этот пример кода для получения дополнительной помощи, если необходимо.

1 голос
/ 05 ноября 2010

Пожалуйста, ознакомьтесь с примером кода в API данных Google.После аутентификации важно позвонить в GoogleHeaders.setGoogleLogin (String).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...