如何以编程方式在Facebook上发布到我自己的墙上?

时间:2013-09-06 18:31:09

标签: python facebook facebook-graph-api

我正在尝试制作一个简单的程序,在Python的Fcebook上发布一些东西到我的墙上。我尝试使用pythonforfacebook中的示例:

import facebook
oauth_access_token = "****"
graph = facebook.GraphAPI(oauth_access_token)
me = "****"
profile = graph.get_object(me)
graph.put_object(me, "feed", message="I am writing on my wall!")

我尝试去开发中心制作应用程序。对于“选择你的应用程序如何与Facebook集成”,我选择了“Facebook登录网站”(我实际上没有网站,我只有一个程序应该发布到我的Facebook墙上,但这是最接近的选项匹配我想做的事...)。

然而,当我运行它时,它说:

$ python a.py 
Traceback (most recent call last):
  File "a.py", line 7, in <module>
    graph.put_object(me, "feed", message="I am writing on my wall!")
  File "/usr/lib64/python2.7/site-packages/facebook.py", line 140, in put_object
    post_args=data)
  File "/usr/lib64/python2.7/site-packages/facebook.py", line 298, in request
    raise GraphAPIError(response)
facebook.GraphAPIError: (#200) The user hasn't authorized the application to perform this action

如何以用户身份登录并授权我的应用?我甚至采取了正确的方法吗?我实际上没有一个网站,我只有一个程序,对于网站字段我输入“http://google.com”并且它有效。

3 个答案:

答案 0 :(得分:3)

我通过获取具有在我的墙上发布的权限的新令牌(特别是“publish_actions”权限)使其成功。我通过使用Graph API Explorer,在下拉菜单中选择我的应用程序,按“获取访问令牌”并选中“publish_actions”来完成此操作。唯一的问题是令牌在一小时后过期。

答案 1 :(得分:2)

您必须授权用户publish_action / publish_stream权限才能在您的留言板上发布。


  • 如果您唯一的任务是发布在墙上/获取基本信息;您可以使用 APP访问令牌代替用户访问令牌,以便在您授权应用后执行操作。要获得App Access Token,您可以使用 -

    GET /oauth/access_token?
      client_id={app-id}
      &client_secret={app-secret}
      &grant_type=client_credentials
    

    或者,直接来自here。但是,请不要在您的应用中对其进行硬编码(出于安全原因)

  • 或者,如果您还想代表用户执行其他操作,则可以将用户令牌延长至2个月的有效期。请阅读here了解详情

答案 2 :(得分:0)

对于那些在4月24日之后偶然发现此帖子的人,Facebook已停止支持此类API调用。

  

自2018年4月24日起,publish_actions权限已被删除。有关更多详细信息,请参见Breaking Changes Changelog。为了为您的应用程序用户提供一种与Facebook共享内容的方式,我们建议您改用Sharing products