2010-10-06 5 views
2

Facebook retourne jetons d'accès sous la forme d'une chaîne:Parsing facebook oauth chaîne access_token

'access_token=159565124071460|2.D98PLonBwOyYWlLMhMyNqA__.3600.1286373600-517705339|bFRH8d2SAeV-PpPUhbRkahcERfw&expires=4375' 

est-il un moyen d'analyser le access_token sans utiliser regex? Je crains que l'utilisation regex serait unaccurate puisque je ne sais pas ce que FB utilise comme jetons d'accès

Je reçois le résultat comme celui-ci:

result=urlfetch.fetch(url="https://graph.facebook.com/oauth/access_token",payload=payload,method=urlfetch.POST) 
result2=result.content 

Répondre

2

Facebook access_token et expires sont Renvoyé en key=value paires . Une façon de les analyser consiste à utiliser la fonction parse_qs du module urlparse.

>>> import urlparse 
>>> s = 'access_token=159565124071460|2.D98PLonBwOyYWlLMhMyNqA__.3600.1286373600-517705339|bFRH8d2SAeV-PpPUhbRkahcERfw&expires=4375' 
>>> urlparse.parse_qs(s) 
{'access_token': ['159565124071460|2.D98PLonBwOyYWlLMhMyNqA__.3600.1286373600-517705339|bFRH8d2SAeV-PpPUhbRkahcERfw'], 'expires': ['4375']} 
>>> 

Il y a aussi parse_qsl si vous souhaitez obtenir les valeurs comme une liste de tuples.

>>> urlparse.parse_qsl(s) 
[('access_token', '159565124071460|2.D98PLonBwOyYWlLMhMyNqA__.3600.1286373600-517705339|bFRH8d2SAeV-PpPUhbRkahcERfw'), ('expires', '4375')] 
>>> dict(urlparse.parse_qsl(s)).get('access_token') 
'159565124071460|2.D98PLonBwOyYWlLMhMyNqA__.3600.1286373600-517705339|bFRH8d2SAeV-PpPUhbRkahcERfw' 
>>> 
+0

Parfait! Bien que sur appengine que j'utilise, j'ai dû l'importer de CGI – user375348

Questions connexes