我正在尝试在我的应用页面墙上发帖,好像它来自应用页面(而不是其他用户)经过研究后,我似乎找不到真正有效的解决方案!
我试图按照这里的文档:
然后通过以下方式获取我的'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为自己发布帖子,而不是从其他用户名生成帖子。
谢谢!
答案 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