Как получить доступ к фиксированным данным пользователя через API Picasa в Android
-
13-12-2019 - |
Вопрос
Я пишу приложение для Android, которое будет получать доступ к фотографиям пользователя (функциональной учетной записи).Если возможно, даже жесткое кодирование функционального идентификатора учетной записи и пароля подойдет.Никакого взаимодействия с конечным пользователем не требуется.
Невозможно использовать API данных Google, поскольку Android не поддерживает Таким образом, самое близкое, что я нашел, это эта однопользовательская «установленная» аутентификация клиента в Документация по API Gdata, Чтобы использовать ClientLogin (также называемый «аутентификация для установленных приложений»), создать объект PicasaWebService, а затем вызовать метод setUserCredentials для установки идентификатора пользователя и пароля
PicasawebService myService = new PicasawebService("exampleCo-exampleApp-1");
myService.setUserCredentials("liz@gmail.com", "mypassword");
Служба Picasa недоступна в консоли API.
Между тем, когда я пытаюсь использовать OAuth 2.0, он недоступен.
Интересно, Picasa должна быть довольно популярной, как лучше всего обеспечить такой простой доступ?
Официальный образец picasa-atom-oauth
Этот — это официальный образец picasa-atom-oauth, который я нашел.Существует настраиваемый класс сервера обратного вызова, однако, похоже, он использует браузер для получения токена.Можно ли в нем жестко закодировать пароль?
Я читаю этот похожий вопрос, и, похоже, с токеном тоже есть проблема.Удалось ли кому-нибудь использовать "oauth2:https://picasaweb.google.com/data/"
как предложено?
Решение
Наконец, после поиска в Google дополнительных примеров, старый логин клиента — это то, что вам нужно.
Я использовал клиент Google API 1.10.1-бета.
private static String getTokenByAuthenticatingWithClientLogin(HttpTransport transport) throws IOException {
ClientLogin authenticator = new ClientLogin();
authenticator.authTokenType = "lh2";
authenticator.username = "username";
authenticator.password = "password";
authenticator.transport = transport;
return authenticator.authenticate().getAuthorizationHeaderValue();
}
установите токен в заголовках
GoogleHeaders headers = new GoogleHeaders();
headers.setApplicationName("APOD/1.0");
headers.setGDataVersion("2");
String token = getTokenByAuthenticatingWithClientLogin(transport);
headers.setAuthorization(token);
Затем используйте com.google.api.client.http.HttpRequestFactory для создания запроса.