如何在Python中延长我的Facebook Graph API令牌?
我现在正在用Python从Facebook上抓取数据。到目前为止,我是通过这个网站获取图形API版本1.0的访问令牌(我需要的是1.0版本):
https://developers.facebook.com/tools/explorer/?method=GET&path=me&version=v1.0
但是我在这个网站上得到的令牌大约一个小时就过期了,那我该怎么在Python中延长这个令牌的有效期呢?我已经看到过在PHP中怎么做,但不幸的是,我的项目只能用Python。
1 个回答
4
Facebook有四种类型的令牌:用户令牌、应用令牌、页面令牌和客户端令牌(https://developers.facebook.com/docs/facebook-login/access-tokens#usertokens)。每种令牌都有自己特定的权限。例如,你可以在用户同意的情况下,使用应用令牌代表用户发帖,但如果想要获取用户的状态信息,就需要用户令牌。网页用户令牌的有效期很短,大约1到2个小时,需要转换为长期有效的令牌(60天)。
在Python中,你可以通过调用GraphAPI的extend_access_token方法来延长令牌的有效期,前提是你使用的是facebook-sdk(可以通过pip安装facebook-sdk)。
views.py:
import facebook
user_access_token = 'USER_ACCESS_TOKEN' # initially generated client-side
app_id = 'YOUR_UNIQUE_APP_ID' # found at developer.facebook.com
app_secret = 'YOUR_APP_SECRET' # found at developer.facebook.com
# Create fb graph object
graph = facebook.GraphAPI(user_access_token)
# Now extend it with the extend_access_token method
extended_token = graph.extend_access_token(app_id=app_id, app_secret=app_secret)
# Confirm token now expires in ~ 60 days or 5184000 seconds
print extended_token
现在令牌已经延长,你可以在用户的名义下存储和使用它,而不需要一个活跃的网页客户端。