He estado golpeando mi cabeza contra la pared para averiguar cómo enviar solicitudes autenticadas con oauth.Cómo enviar una solicitud oauth con python-oauth2
Pude obtener tokens de acceso, pero no estaba del todo seguro de cómo enviar una solicitud con ellos. He encontrado esto en la información del desarrollador de Twitter:
https://dev.twitter.com/docs/auth/oauth/single-user-with-examples#python que tiene un código de ejemplo para el envío de una solicitud autorizada:
def oauth_req(url, key, secret, http_method="GET", post_body=None,http_headers=None):
consumer = oauth.Consumer(key=consumerKey, secret=consumerSecret)
token = oauth.Token(key=tokenKey, secret=tokenSecret)
client = oauth.Client(consumer, token)
resp, content = client.request(
url,
method=http_method,
body=post_body,
headers=http_headers,
#force_auth_header=True
)
return resp,content
oauth_req('http://openapi.etsy.com/v2/shops/:user/transactions',tokenKey,tokenSecret)
Sin embargo, al incluir a toda mi información, que recibe el siguiente error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/tmp/python-22060Umg.py", line 153, in <module>
transactions = oauth_req('http://openapi.etsy.com/v2/shops/:user/transactions',tokenKey,tokenSecret)
File "/tmp/python-22060Umg.py", line 76, in oauth_req
force_auth_header=True
TypeError: request() got an unexpected keyword argument 'force_auth_header'
donde: el usuario es el usuario real (lo he quitado de la publicación) y tokenKey/tokenSecret son los tokens de acceso.
pensé que tal vez era tan simple como comentario la línea en cuestión, pero no hubo suerte:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/tmp/python-22060hwm.py", line 153, in <module>
transactions = oauth_req('http://openapi.etsy.com/v2/shops/:user/transactions',tokenKey,tokenSecret)
File "/tmp/python-22060hwm.py", line 75, in oauth_req
headers=http_headers
File "/usr/lib/python2.7/dist-packages/oauth2/__init__.py", line 662, in request
req.sign_request(self.method, self.consumer, self.token)
File "/usr/lib/python2.7/dist-packages/oauth2/__init__.py", line 493, in sign_request
self['oauth_body_hash'] = base64.b64encode(sha(self.body).digest())
TypeError: must be string or buffer, not None
Así que ahora, stackoverflow, que son mi única esperanza! ¿Alguien tiene sugerencias sobre cómo usar mi token de acceso para enviar una solicitud?
gracias!
¿Puedes publicar tu código? no es posible ayudar sin él – jterrace
El código es el mismo que el del enlace en la publicación original. He editado la publicación original para que contenga el código; ¡Gracias! –