在python中发布到Facebook App页面墙作为App页面

时间:2013-05-21 23:22:19

标签: python django facebook facebook-graph-api facebook-apps

我正在尝试在我的应用页面墙上发帖,好像它来自应用页面(而不是其他用户)经过研究后,我似乎找不到真正有效的解决方案!

我试图按照这里的文档:

然后通过以下方式获取我的'access_token_page':

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=CLIENT_SECRET&grant_type=client_credentials

然后使用facebook python api我尝试:

graph1 = facebook.GraphAPI(access_token_page)
graph1.put_wall_post(fbmessage, attachment, profile_id=APP_PAGE_ID)

然而,这只会返回以下facebook错误:

*** GraphAPIError: (#200) The user hasn't authorized the application to perform this action

关于我失踪的任何想法?请记住,我希望App Page为自己发布帖子,而不是从其他用户名生成帖子。

谢谢!

2 个答案:

答案 0 :(得分:2)

您所做的是使用应用访问令牌发布到页面。

您应该使用页面访问令牌代替页面管理员发布。 用户访问令牌也有效,但这是https://developers.facebook.com/bugs/647340981958249报告的错误,因此建议在此时间之前使用用户访问令牌

https://developers.facebook.com/docs/reference/api/page/#page_access_tokens所述:

  

页面访问标记

     

以页面形式执行以下操作,而不是当前操作   用户,您必须使用Page的访问令牌,而不是用户访问令牌   常用于读取Graph API对象。此访问令牌可以是   通过向/ USER_ID /帐户发出HTTP GET来检索   manage_pages权限。

有关不同类型访问令牌的详细信息,请访问https://developers.facebook.com/docs/facebook-login/access-tokens/

答案 1 :(得分:1)

尝试Django Facebook: https://github.com/tschellenbach/Django-facebook 这将解决您的许多API问题。

您需要页面访问令牌,请参阅此处: https://developers.facebook.com/docs/facebook-login/access-tokens/ 要求manage_pages作为额外许可

完成设置后,只需执行以下操作:

user_graph = OpenFacebook(user_access_token)
response = user_graph.get('me/accounts')
# turn the response to a dict, and be sure to get the page you want
page_access_token = response['data'][0]['access_token']
graph = OpenFacebook(page_access_token)
graph.set('me/feed', message='helloworld')

您可以在此处找到更多文档:

http://django-facebook.readthedocs.org/en/latest/open_facebook/api.html