解析Facebook OAuth访问令牌字符串

2 投票
1 回答
1849 浏览
提问于 2025-04-16 05:04

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_tokenexpires 是以 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'
>>> 

撰写回答