2012-10-09 2 views
0

J'ai travaillé sur le fonctionnement de OAuth2 (via https://developers.google.com/api-client-library/python/guide/aaa_oauth) et j'ai maintenant un objet OAuth2Credentials (appelons l'objet credentials) que je veux utiliser pour le provisionnement de Google Apps (l'exemple ici utilise des sites, mais pourrait être l'un des les apis Gdata)Comment utiliser OAuth2Credentials avec le client gdata de l'API Google en python?

Si je tente:

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

Je reçois

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

lorsque je tente de faire quoi que ce soit

Si je tente

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

ou

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

-je obtenir un AttributeError que l'objet concerné (informations d'identification ou credentials.access_token) n'a pas d'attribut 'modify_request'

Toutes les idées ce que je peux essayer?

Répondre

0

Je ne suis pas entièrement sûr du code client de Google, mais vous pouvez toujours essayer (plug sans vergogne) sanction. C'est un client OAuth 2.0 que j'ai écrit il y a quelques temps sur Github et PyPI.

Les bons côtés:

  • Être une somme exorbitante 55 LOC, il est énormément facile à grok. Si quelque chose va mal, vous n'aurez pas à poser des questions ici .. Vous devriez être en mesure de comprendre exactement ce qui se passe;)
  • Il a été testé avec 8 fournisseurs différents (y compris Google)

Les inconvénients:

  • aurait évidemment besoin d'un refactoring de votre code actuel
  • ne suppose pas (et donc fournir) les mises en œuvre de la persistance
  • Does fournissez pas d'implémentations de l'API (vous devez avoir une connaissance de base de l'API exposé 2.0 OAuth que vous avez affaire à)
0

Ce answer dit que vous devez l'objet OAuth2Credentials monkey-patch, avant de passer à la SitesClient(auth_token=credentials). Il a une réponse vous montrant comment faire le patch de singe

+0

Vu que, mais semble malpropre, et aucun code fourni. Donc je me suis dit que je verrais s'il y avait une bonne façon de le faire – askvictor

Questions connexes