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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的Python脚本在Facebook墙上发布相关的知识,希望对你有一定的参考价值。

我对python脚本和一般在线的任何东西都很陌生,但我想开始有趣的地方,所以我想出了一个目标来编写一个简单的桌面.py文件,每次我运行只是简单地将'Hello World'发布到我的脸书我名下的墙。

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

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

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

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创建了一个登录流程(我没有经验)来检索我可以使用的令牌,但我开始感觉我正在偏离我的内容我应该使用。

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

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

答案

不确定这是否是最有效的答案,但我通过使用应用程序凭据来验证我的登录,但我没有通过请求传递它,而是通过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。

以上是关于简单的Python脚本在Facebook墙上发布的主要内容,如果未能解决你的问题,请参考以下文章

您如何在 facebook 页面上发布到墙上(不是个人资料)

什么是最简单的方法,通过我的 Ruby on Rails 应用程序在我的 Facebook 墙上发帖?

Android - 使用 facebook sdk 在 facebook 墙上发帖的问题

如何通过 Facebook Connect 在 Facebook 墙上分享分数?

类似框上的 Facebook 描述未显示在 Facebook 墙上

使用 Iphone 应用程序在朋友 Facebook 墙上发帖