com.google.gdata.client.GoogleService.setUserToken (android.accounts.AccountManager.getAuthToken (???)) - PullRequest
2 голосов
/ 08 января 2010

У меня есть рабочий код, который использует gdata для извлечения каналов из портфелей Google Finance моего пользователя, но мне пришлось использовать setUserCredentials (имя пользователя, пароль) . Я хотел бы не запрашивать у пользователя имя пользователя и пароль, поскольку устройство Android уже имеет доступ к своей учетной записи Google.

Полагаю, я смогу сделать это с помощью setUserToken (String) , но я не могу понять, как получить соответствующий токен из Android. Я попытался AccountManager.get (context) .blockingGetAuthToken () , но это либо неверный вызов, либо я передаю неверные аргументы.

Кто-нибудь получил gdata, работающий с существующими учетными данными Google на телефоне?

Заранее спасибо, Ленни

1 Ответ

0 голосов
/ 25 февраля 2011

AccountManager.blockingGetAuthToken() - правильный вызов. Передайте ему Account и String authTokenType - В вашем случае, "android" или "finance", ваш выбор (значения строк, которые он ищет, четко не задокументированы).

Простой способ получить учетную запись - это сделать все ваши клиентские связи как часть вызова onPerformSync() в классе, который имеет значение для адаптера синхронизации. Вы можете найти несколько учебных пособий по настройке SyncAdapter. Как часть работы вашего SyncAdapter, вы получите беспорядок прав доступа, например, примерно так:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 
<uses-permission android:name="android.permission.READ_SYNC_STATS" /> 
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" /> 
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.finance" />

Эти два последних, опять же, своего рода обман, вытащили их из того, кто знает, где.

...