用于单用户应用程序的Facebook访问令牌

时间:2015-09-30 21:30:27

标签: python facebook facebook-graph-api oauth server-side

我正在Facebook上创建一个只有一个用户的应用程序:我。我没有为应用程序创建GUI,这意味着没有客户端身份验证。

有没有办法可以使用我的用户名和密码或其他应用信息为自己获取访问令牌?

我熟悉刷新令牌流以及其他人的OAuth应用程序的所有内容,但我没有在没有某种Facebook登录按钮的情况下完成此操作,尤其是在单人应用程序上。我很乐意在我的用户信息中硬编码。

我尝试过使用它:

access_token_url = 'https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=' + config['app_id'] + '&client_secret=' + config['app_secret']
token_response = urllib.urlopen(access_token_url).read()
access_token = token_response.replace('access_token=', '')
session = FacebookSession(
    config['app_id'],
    config['app_secret'],
    access_token,
)

但这并没有给我一个特定于我自己帐户的访问令牌,只有一个用于应用程序本身。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。这是我做的:

我转到图谱API资源管理器(https://developers.facebook.com/tools/explorer),然后从那里为我的应用程序获取了一个访问令牌。

获得令牌后,我使用此URL获取使用该访问令牌的长期令牌:

token_exchange_url = 'https://graph.facebook.com/oauth/access_token?
                      client_id=APP_ID&
                      client_secret=APP_SECRET&
                      grant_type=fb_exchange_token&
                      fb_exchange_token=ACCESS_TOKEN'

exchange_response = urllib.urlopen(token_exchange_url).read()
access_token = exchange_response.replace('access_token=', '')
access_token = access_token[:access_token.index('&')]

然后我保存了access_token,并且在任何后续调用中我都可以使用该代码更新access_token,以确保它被刷新。