Как использовать OAuth2Credentials с клиентом gdata API Google в python?

Я выяснил, как работает OAuth2 (с помощью https://developers.google.com/api-client-library/python/guide/aaa_oauth), и теперь у меня есть объект OAuth2Credentials (назовем этот объект credentials), который я хочу использовать для целей подготовки Google Apps (в данном примере используются сайты, но может быть любой из gdata apis)

Если я попытаюсь:

client = gdata.sites.client.SitesClient(site="test-site",domain='my.domain')
client = credentials.authorize(client)

я получил

TypeError: new_request() got an unexpected keyword argument 'http_request'

когда я пытаюсь что-то сделать

Если я попытаюсь

client = gdata.sites.client.SitesClient(site="test-site",domain='my.domain', auth_token=credentials)

or

client = gdata.sites.client.SitesClient(site="test-site",domain='my.domain', auth_token=credentials.access_token)

Я получаю AttributeError, что соответствующий объект (учетные данные или учетные данные.access_token) не имеет атрибута «modify_request»

Любые идеи, что я могу попробовать?


person askvictor    schedule 09.10.2012    source источник


Ответы (2)


Я не совсем уверен в клиентском коде Google, но вы всегда можете попробовать (бессовестный плагин) санкцию. Это клиент OAuth 2.0, который я написал некоторое время назад, доступный на Github и PyPI.

Плюсы:

  • Имея колоссальные 55 LOC, его чрезвычайно легко грокнуть. Если что-то пойдет не так, вам не придется здесь задавать вопросы. Вы должны просто понимать, что происходит ;)
  • Он был протестирован с 8 различными провайдерами (включая Google).

Недостатки:

  • Очевидно, потребуется рефакторинг вашего текущего кода.
  • Не предполагает (и, следовательно, не обеспечивает) реализацию постоянства
  • Не предоставляет реализации API (вы должны иметь общее представление об API, предоставляемом OAuth 2.0, с которым вы имеете дело)
person Demian Brecht    schedule 09.10.2012

В этом ответе говорится, что вам нужно изменить объект OAuth2Credentials, прежде чем передавать его в SitesClient(auth_token=credentials). У него есть ответ, показывающий вам, как сделать исправление обезьяны

person Dominic Mitchell    schedule 09.10.2012
comment
Видел это, но кажется грязным и без кода. Поэтому я подумал, что посмотрю, есть ли правильный способ сделать это. - person askvictor; 09.10.2012