我需要在自己的 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)来执行此操作。
答案 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脚本,可在提供的电子邮件/密码时自动检索令牌。
确保您安装了lxml
,requests
和robobrowser
,因为这些是先决条件。运行
requests
和robobrowser
pip install robobrowser
和
pip install requests
lxml是一个“小”更棘手,因为它必须编译(有一个最新版本)。按照这个SO:How to install lxml on Ubuntu