Facebook:如何以编程方式检索访问令牌?

时间:2013-03-26 16:26:16

标签: facebook facebook-graph-api

我需要在自己的 Facebook页面上发布消息;我需要以编程方式(在我的情况下使用Python)。我设法使用此代码(在Python中)执行此部分:

import urllib, urllib2

access_token='XXXX'
fb_page_id='YYYY' # my page ID

post_data = {'access_token':access_token, 'message':'hey this is a test!'}
request_path = str(fb_page_id)+'/feed'
post_data = urllib.urlencode(post_data)
response = urllib2.urlopen(
    'https://graph.facebook.com/%s' % request_path, post_data
)

正确返回FB页面上生成的帖子的ID:

In [11]: response.readlines()
Out[11]: ['{"id":"135386143198208_461964357207050"}']

问题:

为了生成access_token并在上面发出API请求,我必须手动按照详细的here三个步骤进行操作。

但实际上,这个手动过程是不可接受的,因为我需要从cron作业运行此任务。因此我需要自动化它,因为Facebook中的access_token是暂时的。即每次运行此脚本时,我都需要获取访问令牌。怎么做?

只要您传达相关步骤,就可以在您的答案(curl,JavaScript,Java,PHP)中随意使用任何脚本工具。请注意,我需要使用任何服务器端语言(Python / Ruby / PHP)来执行此操作。

4 个答案:

答案 0 :(得分:4)

无法以编程方式检索短期令牌。它违背了用户交互的目的。

Facebook故意以这种方式确保用户完全手动控制他们安装的应用程序。

一旦用户授予初始访问权限,您就可以将该过程自动化最多两个月(如果用户使令牌无效,则可以更早,例如更改密码)

通过向

发出HTTP请求
https://graph.facebook.com/oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id=APP_ID&
    client_secret=APP_SECRET&
    fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN 

在这两个月结束后,用户必须是重新授予应用程序访问权限的用户,并提供一个新的短期令牌,然后您可以使用上面的代码重新扩展。

答案 1 :(得分:4)

如果扩展(用户)访问令牌,则可以请求实际上不会过期的(页面)访问令牌。

请参阅以下文档的“扩展页面访问令牌”部分:https://developers.facebook.com/docs/howtos/login/extending-tokens/

答案 2 :(得分:2)

祝福编写此代码的灵魂。不是我,而是发现它在某个地方。工作顺利。使用您的电子邮件和电子邮件调用此功能密码。

px

答案 3 :(得分:0)

要以编程方式为普通用户获取facebook令牌,您可能会对此感兴趣:https://github.com/fbessez/Tinder/blob/master/fb_auth_token.py,它是一个python脚本,可在提供的电子邮件/密码时自动检索令牌。

确保您安装了lxmlrequestsrobobrowser,因为这些是先决条件。运行

可以轻松获取requestsrobobrowser

pip install robobrowser

pip install requests

lxml是一个“小”更棘手,因为它必须编译(有一个最新版本)。按照这个SO:How to install lxml on Ubuntu