此问题之前已被问到,但许多解决方案已被弃用,并且GraphAPI的要求似乎已使许多解决方案无关紧要。 我已经摆弄了fbpy,facebook,oauth,oauth2软件包,并查看了他们的例子,但仍然无法弄清楚如何让它工作。我对任何代码和我一直使用的软件包都不信任,并且想知道是否有人有任何明确的解决方案,他们知道会起作用。谢谢。如何使用Python和GraphAPI更新FB状态?
回答
使用facepy一个可能的(测试!)解决方案:
- 创建一个新的application或使用以前创建的现有一个。
- 使用Graph API explorer和应用程序的
status_update
扩展权限生成用户访问令牌。 使用在上一步中创建用户访问令牌facepy:
from facepy import GraphAPI ACCESS_TOKEN = 'access-token-copied-from-graph-api-explorer-on-web-browser' graph = GraphAPI(ACCESS_TOKEN) graph.post('me/feed', message='Hello World!')
感谢您的摘录。我实际上尝试了这个确切的片段。我遇到问题的部分是让OAuth正常工作。似乎有一个OAuth和OAuth2软件包,OAuth2是较新的软件包。除了已经存在的问题,该包已经过时的例子(他们从Oauth导入OAuth,当包的名称是OAuth2 ...)时,提供的例子似乎过于复杂,对于这样一个简单的任务(165行...尽管一大块这是无可厚非的评论)。没有能够把一个有效的oauth_access_token,我仍然想知道我在做什么错... –
我用过的短例似乎并没有完成任务... –
重构答案(测试正确工作)使用“面对面”并包括如何生成用户访问令牌的说明。 –
首先,你需要做的是了解login flows。如果你很容易想通过不同的Facebook库进行切换,你应该知道应该是。因此,它可以有非常详细的代码,这是非常简单的,基于实现。
接下来就是有不同的方法来实现处理OAuth和不同的方式来显示和启动您的网络应用程序在Python中。没有浏览器就无法授权。否则,你将不得不复制粘贴access_token到代码。
比方说,您选择web.py
来处理您的Web应用程序演示文稿,requests.py
来处理Graph API HTTP调用。
import web, requests
然后设置,我们希望所有的请求要经过
url = (
'/', 'index'
)
现在把你的应用程序ID,秘密,登录后的URL网址,你想用
app_id = "YOUR_APP_ID"
app_secret = "APP_SECRET"
post_login_url = "http://0.0.0.0:8080/"
这代码将有一个类index
来处理逻辑。这节课,我们要处理的授权code
Facebook将在
user_data = web.input(code=None)
code = user_data.code
登录从这里设置后返回的条件检查code
if not code:
# we are not authorized
# send to oauth dialog
else:
# authorized, get access_token
内“未授权“分支,将用户发送到对话框
dialog_url = ("http://www.facebook.com/dialog/oauth?" +
"client_id=" + app_id +
"&redirect_uri=" + post_login_url +
"&scope=publish_stream")
return "<script>top.location.href='" + dialog_url + "'</script>"
否则,我们就可以使用code
收到
token_url = ("https://graph.facebook.com/oauth/access_token?" +
"client_id=" + app_id +
"&redirect_uri=" + post_login_url +
"&client_secret=" + app_secret +
"&code=" + code)
response = requests.get(token_url).content
params = {}
result = response.split("&", 1)
for p in result:
(k,v) = p.split("=")
params[k] = v
access_token = params['access_token']
从这里你可以选择你想怎么处理与呼叫更新状态,例如形式提取access_token
,
graph_url = ("https://graph.facebook.com/me/feed?" +
"access_token=" + access_token)
return ('<html><body>' + '\n' +
'<form enctype="multipart/form-data" action="' +
graph_url + ' "method="POST">' + '\n' +
'Say something: ' + '\n' +
'<input name="message" type="text" value=""><br/><br/>' + '\n' +
'<input type="submit" value="Send"/><br/>' + '\n' +
'</form>' + '\n' +
'</body></html>')
或者使用face.py
from facepy import GraphAPI
graph = GraphAPI(access_token)
try:
graph.post(
path = 'me/feed',
message = 'Your message here'
)
except GraphAPI.OAuthError, e:
print e.message
所以最后你可以得到一个简化版本一样
import web
from facepy import GraphAPI
from urlparse import parse_qs
url = ('/', 'index')
app_id = "YOUR_APP_ID"
app_secret = "APP_SECRET"
post_login_url = "http://0.0.0.0:8080/"
user_data = web.input(code=None)
if not user_data.code:
dialog_url = ("http://www.facebook.com/dialog/oauth?" +
"client_id=" + app_id +
"&redirect_uri=" + post_login_url +
"&scope=publish_stream")
return "<script>top.location.href='" + dialog_url + "'</script>"
else:
graph = GraphAPI()
response = graph.get(
path='oauth/access_token',
client_id=app_id,
client_secret=app_secret,
redirect_uri=post_login_url,
code=code
)
data = parse_qs(response)
graph = GraphAPI(data['access_token'][0])
graph.post(path = 'me/feed', message = 'Your message here')
欲了解更多信息请参阅
* Facebook的API - 用户供稿:http://developers.facebook.com/docs/reference/api/user/#feed
*发表一个Facebook的照片在Python - 基本调料:http://philippeharewood.com/facebook/publish-a-facebook-photo-in-python-the-basic-sauce/
* Facebook和Python的 - 基本调料: http://philippeharewood.com/facebook/facebook-and-python-the-basic-sauce/
谢谢你的详细和深思熟虑的回复,phwd。上面你和佩德罗似乎都在使用面容,所以我也会这样。我试图快速为我的朋友提供一些东西,并没有像我做这件事那样期望通过文档来翻阅文档(在轮询收件箱中的特定电子邮件后,自动化facebook上的状态消息)。这比我预期或得到的帮助要多得多;再次感谢! –
您也可以尝试this博客。它使用fbconsole应用程序。
从博客的代码:
from urllib import urlretrieve
import imp
urlretrieve('https://raw.github.com/gist/1194123/fbconsole.py', '.fbconsole.py')
fb = imp.load_source('fb', '.fbconsole.py')
fb.AUTH_SCOPE = ['publish_stream']
fb.authenticate()
status = fb.graph_post("/me/feed", {"message":"Your message here"})
这是我如何得到它的工作。你绝对不需要为此创建任何应用程序。我将介绍如何将状态更新发布到您的个人资料和您的Facebook页面。
首先,发布状态更新您的个人资料:
转到https://developers.facebook.com/tools/explorer。
您会在它之前看到带有Access令牌的文本框。点击此文本框旁边的“获取访问令牌”按钮。它会打开一个弹出窗口,询问您访问令牌的各种权限。基本上这些权限通过使用此令牌的Graph API来定义您可以执行的操作。选中您需要的所有权限旁边的复选框,其中一个将更新您的状态。
现在继续并安装面包模块。最好的方法是使用pip安装。
之后填写Flash在任何.py文件下面的代码片段:
from facepy import GraphAPI
access_token = 'YOUR_GENERATED_ACCESS_TOKEN'
apiConnection = GraphAPI(access_token)
apiConnection.post(path='me/feed',
message='YOUR_DESIRED_STATUS_UPDATE_HERE')
现在执行这个.py文件标准的Python的方式,检查你的Facebook。您应该看到已发布到您的Facebook个人资料。
接下来,做同样的事情与你的Facebook页面:
的过程几乎是完全不同的,用于生成您的访问令牌相同。
现在你不能使用相同的访问令牌发布到你的Facebook页面。您需要生成一个新的,这对于新来Graph API的人来说可能有点棘手。以下是您需要做的事情:
转到相同的developers.facebook.com/tools/explorer页面。
找到显示'Graph API Explorer'的下拉列表并点击它。从下拉菜单中选择您想要发布更新的页面。为此页面生成一个新的访问令牌。该过程描述为here:。不要忘记检查扩展权限选项卡中的manage_pages权限。
现在,使用与以前使用的代码相同的代码并运行它。
转到您的Facebook页面。您应该将YOUR_DESIRED_STATUS_UPDATE
发布到您的页面。
希望这会有所帮助!
- 1. 如何使用FB SDK 3.1和iOS <6预览Facebook状态更新?
- 2. 更新approles使用GraphApi
- 3. 使用FB PHP API发布状态更新,新闻馈送
- 4. 使用Python更新Facebook的状态
- 5. FB如何智能地通知我状态更新?
- 6. 在FB中使用GraphAPI在Python中发布照片
- 7. FB图api:搜索帖子和状态更新
- 8. 如何使用GraphApi在Android上创建FB相册
- 9. 如何使用使用JavaScript和GraphAPI
- 10. 使用React更新状态
- 11. 更新状态使用codeigniter
- 12. 通过Python和Graphapi
- 13. 在酶不能更新状态使用实例()。状态和更新()
- 14. 如何更新状态栏?
- 15. 状态如何更新?
- 16. 如何更新Facebook状态?
- 17. 试图确定如果用户使用的FB GraphAPI
- 18. 如何使用C#和ASP.NET更新Facebook状态?
- 19. 如何使用App引擎创建朋友和状态更新
- 20. 如何更新用户的Facebook状态?
- 21. 如何在UI状态更改时更新wtf-form状态?
- 22. 更新状态
- 23. FB广告API的状态,effective_status和广告实际状态
- 24. 如何使用react-redux中reducer状态的值更新组件的状态?
- 25. 如何评论和喜欢FB的状态,当我们使用FBGraph API(iphone)
- 26. 获取fb状态的like_info
- 27. 如何在PHP中使用hybridauth时更新用户状态?
- 28. 使用Rest API + Python更新QC中的测试执行状态
- 29. JIRA:使用python-jira更新冲刺状态lib
- 30. 使用pyfacebook进行Facebook状态更新
如果你有一个类似于file_get_contents的函数,并且知道使用curl,我可以一步一步地告诉你如何去做。由于我不是一个蟒蛇人,我不能给你确切的代码。如果你开始使用FB,事实上很简单。 – Kishor