在Facebook墙上发布的简单Python脚本

时间:2017-12-19 05:51:02

标签: python-3.x scripting facebook-wall facebook-graph-api-v2.0

我对python脚本和一般在线的任何东西都很陌生,但我想从一个有趣的地方开始,所以我想出了一个目标写一个简单的桌面.py文件,每次我只是简单地运行帖子' Hello World'以我的名义登录我的Facebook墙。

最后,我通过硬编码(据我所知)管理用户访问令牌并使用该令牌下的facebook图表

facebookGraph = facebook.GraphAPI(access_token="qwertyuiop")
fb_response = facebookGraph.put_object("me", "feed", message="Hello World")

现在,文档说用户令牌的生命周期很短,我不喜欢手动进入并将其复制到我的程序中的想法(即使它每2小时一次)或者2个月)所以我做了第二次尝试,而是取了一个App Token,我启用了每个访问我帐户的权限

def FetchAppAccessToken(app_id, app_secret):
        headers = {'grant_type': 'client_credentials', 'client_id': app_id, 'client_secret': app_secret}
        response = requests.post('https://graph.facebook.com/oauth/access_token?', params = headers)
        logging.debug(response.text)
        return response

#then.. get the right substring within response and use the graph as before 

但我总是遇到

facebook.GraphAPIError: An active access token must be used to query information about the current user.

我认为可能使用用户令牌是可行的方法,但经过几个小时的试验和错误,包括尝试通过提供电子邮件和密码来获取用户令牌,我读到没有用户根本不可能相互作用。所以回到App Tokens并阅读更多内容。我在Python中使用PHP或使用OAuth / OAuth2创建了一个登录流程(我没有经验)来检索我可以使用的令牌,但我开始觉得我下车了跟踪我应该使用的内容。

是否有一种更简单的方法,例如为文件提供电子邮件和密码,只要它在我的桌面上完成该任务?

另外,我想避免打开任何浏览器并单击模拟来执行此操作(如果可能的话):

1 个答案:

答案 0 :(得分:0)

不确定这是否是最有效的答案,但我通过使用应用程序凭据来验证我的登录,但我没有通过请求传递它,而是通过WebWidget来模拟一个浏览器,其中包含URL代码或令牌,在检索值后关闭窗口并使用它创建facebook图表并像平常一样运行。

facebookGraph = facebook.GraphAPI(access_token=accessToken["access_token"], version=2.7)
facebookGraph.put_object(parent_object='me', connection_name='feed', message='Hello, world')

不幸的是,它必须通过伪浏览器。

我还没试过这个,但是,

另一方面,如果用户已登录,则可以在用户已登录时检查cookie并交换访问令牌的代码,如果没有,则只需浏览器登录。这样,每次运行程序时都不需要弹出webwidget。