我有一个应用程序引擎Web应用程序,该应用程序希望自动将帖子发布到我控制的Facebook应用程序的墙上(即每次在网站上发生特定事件时,我都想更新我的Facebook应用程序的墙上)。
该代码将从服务器上的延迟任务中调用。
我一直找不到任何解决此问题的方法。您的帮助将不胜感激。
我要做的第一件事是使用以下代码获取访问令牌:
https://graph.facebook.com/oauth/access_token?client_id=FACEBOOK_APP_ID&client_secret=FACEBOOK_APP_SECRET&grant_type=client_credentials&scope=manage_pages,offline_access
使用返回的访问令牌,这就是我在服务器上运行的内容:
form_fields = {
"access_token": FACEBOOK_ACCESS_TOKEN,
"message": tgText
};
form_data = urllib.urlencode(form_fields)
result = urlfetch.fetch(url="https://graph.facebook.com/MYAPP_FACEBOOK_ID/feed",
payload=form_data,
method=urlfetch.POST,
validate_certificate=False,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
但是调用此操作会导致:
{"error":{"type":"OAuthException","message":"(#200) The user hasn't authorized the application to perform this action"}}
最佳答案
作为管理员,您可以使用OAuth授予对第三方应用程序(例如python应用程序)的访问权限,以发布到应用程序的个人资料页面(http://www.facebook.com/apps/application.php?id=YOUR_APP_ID):
http://developers.facebook.com/docs/authentication/(部分页面登录)
收到访问令牌后,您应该可以按照以下说明将其发布到“应用资料页面”:
http://developers.facebook.com/docs/reference/api/post/(部分发布)