Je suis en train d'utiliser OAuth d'un site web, ce qui nécessite la signature de la méthode pour être "HMAC-SHA1" seulement.
Je me demande comment mettre en Python?
Je suis en train d'utiliser OAuth d'un site web, ce qui nécessite la signature de la méthode pour être "HMAC-SHA1" seulement.
Je me demande comment mettre en Python?
Pseudocodish:
def sign_request():
from hashlib import sha1
import hmac
# If you dont have a token yet, the key should be only "CONSUMER_SECRET&"
key = "CONSUMER_SECRET&TOKEN_SECRET"
# The Base String as specified here:
raw = "BASE_STRING" # as specified by oauth
hashed = hmac.new(key, raw, sha1)
# The signature
return hashed.digest().encode("base64").rstrip('\n')
La Signature des erreurs résidez habituellement dans la base de la chaîne, assurez-vous de le comprendre (comme indiqué par la OAuth1.0 spec ici: http://tools.ietf.org/html/draft-hammer-oauth-10#section-3.4.1).
Les entrées suivantes sont utilisées pour générer la Signature de la Base de la Chaîne:
file=vacation.jpg&oauth_consumer_key=dpf43f3p2l4k3l03&
oauth_nonce=kllo9940pd9333jh&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1191242096&
oauth_token=nnch734d00sl2jdk&
oauth_version=1.0&size=original
Concaténer et les encoder tout le toutim, et il se termine de la manière suivante:
GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26
oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3Dkllo9940pd9333jh%26
oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26
oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26size%3Doriginal
C'est déjà là http://docs.python.org/library/hmac.html#module-hmac
Il existe plusieurs bibliothèques python disponible à la oauth site web, mais si vous êtes simplement intéressé à une mise en œuvre spécifique, vous pourriez avoir un coup d'oeil à l'un d'entre eux.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.