6

我正在尝试制作一个简单的程序,用 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 ”并且它有效。

4

3 回答 3

3

我通过获得一个有权在我的墙上发布的新令牌(特别是“publish_actions”权限)使其工作。我通过使用Graph API Explorer来做到这一点,在下拉菜单中选择我的应用程序,按“获取访问令牌”并检查“publish_actions”。唯一的问题是令牌在一小时后过期。

于 2013-09-09T18:29:42.647 回答
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
    

    或者,直接从这里。但不要在您的应用程序中硬编码(出于安全原因)

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

于 2013-09-10T06:13:42.933 回答
1

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

截至 2018 年 4 月 24 日,publish_actions 权限已被删除。有关更多详细信息,请参阅重大更改更新日志。为了让您的应用用户能够向 Facebook 分享内容,我们鼓励您改用我们的分享产品

于 2018-11-28T05:47:05.493 回答