Я пытаюсь разработать небольшой инструмент Python для взаимодействия с моей учетной записью flickr. Я хочу, чтобы все было просто, поэтому я решил использовать учетную запись Flickr, которую я уже настроил в своей системе (платформа сетевых учетных записей).
Я изучил учебник по Онлайн-аккаунтам для разработчиков приложений и смог получить подробную информацию о моей учетной записи Flickr.
Проблема появилась, когда я попытался использовать модуль flickrapi. Я пробовал последнюю версию, а также версию, доступную через apt в 13.04. API немного изменился, но обе попытки закончились сообщением о том, что у меня неверный токен oauth. Это то, что я попробовал:
import flickrapi
flickr = flickrapi.FlickrAPI(u"d87224f0b467093b2a87fd788d950e27", u"4c7e48102c226509",
token=flickrapi.auth.FlickrAccessToken(u"my_token",
u"my_token_secret", u"write",
u'DarGad', u'dargad', u'user_nsid'))
flickr.test.login()
, который приводит к:
ERROR:flickrapi.auth.OAuthFlickrInterface:do_request: Status code 400 received, content:
ERROR:flickrapi.auth.OAuthFlickrInterface: oauth_problem=parameter_absent
ERROR:flickrapi.auth.OAuthFlickrInterface: oauth_parameters_absent=oauth_token
import flickrapi
flickr = flickrapi.FlickrAPI("d87224f0b467093b2a87fd788d950e27", "4c7e48102c226509",
token="my_token")
flickr.test_login()
результаты с FlickrError: Error: 98: Invalid auth token
. Я также безуспешно пробовал разные комбинации флагов-конструкторов FlickrAPI
(например, store_token
, cache
).
Я использовал аналогичный подход для Twitter (использовал модуль python-twitter от apt), и он отлично работал с уже настроенной учетной записью.
Я предполагаю, что проблема с flickrapi, так как тот же самый токен работает с Shotwell и unity-photos-lens. Я проверил их источники, и ни один из них не использует flickrapi (а Shotwell даже не в Python).
Буду признателен за любые советы о том, как заставить flickrapi работать с платформой онлайн-аккаунтов. Или, может быть, есть другой модуль Python, который правильно работает с учетными записями онлайн? Я также попробовал flickr.py и python-flickr-api , но у меня сложилось впечатление, что оба устарели - с ними тоже нет успеха.
Похоже, мне все-таки удалось найти путь.
Правильная версия, которая будет использоваться, является версией из источников. Версия, поставляемая с Ubuntu 13.04, слишком старая и использует предыдущий API аутентификации flickr. 2.0-бета от hg использует новый API oauth.
Проблема заключалась в том, что токен, предоставленный в конструкторе FlickrAPI
, не был передан внутреннему OAuthFlickrInterface
. Чтобы обойти эту проблему, мне нужно было просто позвонить:
flickr = flickrapi.FlickrAPI(
# args same as before
)
flickr.token_valid()
, если этот метод возвращает True
, мы можем убедиться:
rsp = flickr.test.login()
Это выполнит вызов API для проверки токена , но перед этим он передаст объект токена OAuthFlickrInterface в качестве побочного эффекта.
Теперь я могу использовать flickrapi с моей учетной записью Ubuntu Flickr!