我一直在努力使用 python 来访问 Facebook 洞察信息。除了对我开发的应用程序的应用程序见解之外,我还能够获得公共信息(例如,可口可乐页面上的“喜欢”)。
因为我是页面和应用程序的管理员和开发人员,所以当我访问 facebook.com/insights 时,我会看到一个页面部分和一个应用程序部分。我希望能够从图形 api 中获得两者的见解并将它们存储在我的个人数据库中。获得应用洞察力并不难。我在创建我的应用程序时获得了我的 app_id 和 app_secret,然后在此页面http://developers.facebook.com/docs/authentication/上按照应用程序登录下的流程进行操作。这给了我一个应用程序 access_token,我可以用它来获取应用程序洞察力。
当试图对页面做同样的事情时,我遇到了更多的麻烦。正如许多以前的帖子所提到的,大多数 facebook 文档都与 facebook 应用程序有关,该应用程序获取 access_token 来管理或读取页面中的见解。我知道这对于与用户页面交互的应用程序很有用。但是,我的直觉告诉我,我应该能够通过 read_insights 为我作为管理员的页面获取访问令牌,而无需通过外部应用程序。
我能够阅读页面见解的唯一方法是使用 Graph Api Explorer。我使用 Explorer 获得了一个 access_token(通过 access_token 按钮,允许 Explorer 访问我的个人数据并请求 manage_pages 和 read_insight 扩展权限)。然后我按照我在上面发布的 /docs/authentication/ 页面上的页面登录下的说明获取我管理的 facebook 页面的 access_token。然后我终于可以运行https://graph.facebook.com/PAGE_ID/insights?access_token=RETRIEVED_TOKEN了。然而,这是一种非常麻烦的查找 access_token 的方法。有没有办法让这个令牌不那么麻烦?谢谢你的帮助。我已经为此苦苦挣扎了一段时间。
我还包含了用于获取应用程序访问令牌的代码。
def get_access_token():
args = dict(client_id=FACEBOOK_APP_ID, client_secret=FACEBOOK_APP_SECRET, grant_type="client_credentials" )
url = "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)
response = urlparse.parse_qs(urllib.urlopen(url).read())
access_token = response['access_token'][0]
return access_token