解析Facebook OAuth访问令牌字符串
Facebook 返回的访问令牌是以字符串的形式出现的:
'access_token=159565124071460|2.D98PLonBwOyYWlLMhMyNqA__.3600.1286373600-517705339|bFRH8d2SAeV-PpPUhbRkahcERfw&expires=4375'
有没有办法在不使用正则表达式的情况下解析这个 access_token?我担心使用正则表达式会不准确,因为我不知道 Facebook 使用什么格式的访问令牌。
我得到的结果是这样的:
result=urlfetch.fetch(url="https://graph.facebook.com/oauth/access_token",payload=payload,method=urlfetch.POST)
result2=result.content
1 个回答
2
Facebook 的 access_token
和 expires
是以 key=value
的形式返回的。解析这些数据的一种方法是使用 parse_qs
函数,这个函数来自 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']}
>>>
如果你想把这些值以元组的列表形式获取,还可以使用 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'
>>>