Мне нужно получить токен аутентификации OAuth2, чтобы передать его на сервер, чтобы он мог получать список каналов Google Reader для пользователя. Сервер .NET. У меня нет доступа к нему или к его коду, но, скорее всего, он использует unofficial Reader APIAndroid - не удалось использовать токен доступа OAuth для извлечения каналов Google Reader
Я смог использовать диспетчер Android для получения действительного токена для этой цели с помощью следующего кода (обратите внимание, что authTokenType = «читатель»)
Account account = accounts[0];
manager.getAuthToken(account, "reader", null, this, new AccountManagerCallback<Bundle>() {
public void run(AccountManagerFuture<Bundle> future) {
try {
// If the user has authorized your application to use the tasks API
// a token is available.
String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
// Now you can send the token to API...
cacheManager.putString(GOOGLE_AUTH, token);
GoogleReaderManager.startAddFeedActivity(AddGoogleReaderSourcesActivity.this);
finish();
} catch (OperationCanceledException e) {
Log.e(TAG, "User cancelled", e);
finish();
} catch (Exception e) {
Log.e(TAG, "Failed to obtain Google reader API_KEY", e);
}
}
}, null);
код выше работает отлично, когда я посылаю маркер на стороне сервера .Net приложения: приложение может получить список чтения каналов.
Проблема в том, что это работает только для устройств Google внутри. На Nook у меня нет такой удачи, так как нет возможности найти аккаунт Google для менеджера аккаунта. Поэтому я пытаюсь использовать протокол OAuth 2 как
Он отлично работает с получением токена: пользователь одобряет приложение с мобильной страницы, которое возвращает токен кода, который затем переносит мобильное приложение для токена Auth. Однако этот токен не будет работать с процессом сервера. У меня есть ощущение, что, возможно, я использую неправильный объем в этом URL:
Прицелы, что я стараюсь в различных комбинациях:
- https://www.google.com/reader/api
- https://www.google.com/reader/api/0
- https://www.google.com/reader/api/0/subscription/list
- https://www.google.com/reader/api+https://www.google.com/reader/atom
Вот пример JSON, который возвращается из получить маркер POST
{"expires_in":3600,
"token_type":"Bearer",
"access_token":"ya29.AHES6ZSEvuUb6Bvd2DNoMnnN_UnfxirZmf_RQjn7LptFLfI",
"refresh_token":"1\/bUwa5MyOtP6VyWqaIEKgfPh08LNdawJ5Qxz6-qZrHg0"}
Am I портя область или тип маркера? Не знаете, как изменить тип токена. Любые другие идеи?
P.S. Страница входа в учетную запись Google спрашивает: Manage your data in Google Reader
, поэтому я подозреваю, что сфера не соответствует действительности
Область действия должна быть «https://www.google.com/reader/api/», как упомянуто здесь. Устраните посредника: попробуйте напрямую обратиться к API, и когда вы его заработаете, используйте ваш сервер .NET. Аутентификация читателя: http://code.google.com/p/google-reader-api/wiki/Authentication –
Это была первая область, которую я пробовал, увы, не пошел. – Bostone