2010-10-06 30 views
2

Facebook在一個字符串的形式返回訪問令牌:解析Facebook的OAuth的ACCESS_TOKEN串

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

有沒有一種方法來解析沒有的access_token使用正則表達式?我害怕使用正則表達式將unaccurate,因爲我不知道是什麼FB使用的訪問令牌

我得到的結果是這樣的:

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

回答

2

的Facebook access_tokenexpires返回爲key=value對。解析它們的一種方法是使用urlparse模塊中的parse_qs函數。

>>> 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']} 
>>> 

還有parse_qsl如果您希望獲取作爲元組列表的值。

>>> 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

太棒了!雖然在我使用的appengine上,我不得不從cgi導入它 – user375348 2010-10-06 14:00:00