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

Facebook Access Token for Single User Application

我正在 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,
)

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

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

我去了 Graph API Explorer (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 以确保它被刷新。