2009-11-24 81 views
3

我喜欢在我的应用程序下面的一些代码:有没有办法将@mention插入到使用pyfacebook发布的Facebook状态更新中?

message = "Hi, @John Doe!" 
postID = fb.stream.publish(
    message = loader.render_to_string('wall_post.phtml', {'message':message}), 
    action_links = simplejson.dumps([{'text': "Check out blah", 'href': "http://blah.dev"}]), 
    target_id = 'nf' 
) 

有什么办法来表示消息字符串中的Facebook @mention使Facebook的将其转换为一个配置文件链接的用户提到?

+0

有没有人发现了如何做到这一点? – Jayrox 2010-03-03 19:28:34

回答

4

我也一直在寻找这个答案。 Facebook网站使用以下格式:

@ [139730900025:PhotoGrabber]是真棒

代表联系,但我一直无法使这项工作。我重新张贴在Facebook的论坛线程下的“流”的范畴,因为您的文章没有得到任何注意:

http://forum.developers.facebook.com/viewtopic.php?id=47885

+0

嘿。刚刚在Facebook论坛上看到了你的回复,并表示你放弃了。只是抬起头来,但我最终也做了同样的事情。我试图让http://atlibs.matchstrike.net的facebook侧面像Twitter一样友好,但是事情有了起色,现在我们正在处理其他事情。谢谢你尝试,但我很感激。 – Thomas 2010-02-04 05:12:36

+0

有没有人发现如何做到这一点? – Jayrox 2010-03-03 19:27:41

0

我敢肯定,这是不可能的时刻。如果通过使用tam7t建议它应该工作的格式是可行的...您最好的选择是要求他们将其添加到他们的api流解析器。

0

这是不可能的,对不起。

0

AFAIK Facebook的API不允许这样做。我目前唯一知道的方法是用tam7t的答案描述的格式编写一个屏幕抓取工具来完成这些帖子。如果您使用Facebook网站的移动版本(m.facebook.com),它会更容易。

注意:这可能违反了Facebook的应用程序TOS。

编辑: 下面是一些Ruby代码,将这样的伎俩,用Mechanize Gem

require 'mechanize' 

agent = Mechanize.new 
agent.user_agent_alias = 'Mac Safari' 

page = agent.get('http://m.facebook.com') 
form = page.forms.first 
# enter credentials 
form.pass = 'user password' 
form.email = '[email protected]' 
page = agent.submit form 

# go straight to page to post on 
page = agent.get("http://m.facebook.com/wall.php?id=PAGE_ID_NUM") 
form = page.forms.first 
form.message = "@[139730900025:PhotoGrabber] is awesome" 
page = agent.submit form 

注:很明显(如tiagoboldt好心指出的),这将是错误的存储/使用的其他凭据你的应用程序中的人。这种方法只适用于从您控制的Facebook帐户发布帖子。这就是说,回到在墙贴中放置@mention的原始问题,我已经注意到,虽然帖子和@mention在墙上很好,但这种方法不会将帖子传播给提到的用户/页面的墙。不知道这对你是否重要。

+0

这种方法在很多层面上都很糟糕:存储用户的密码,不通过API与不同的站点进行交互等。它可能以很多方式失败,不应该考虑它。 – tiagoboldt 2011-05-18 10:09:42

+1

不需要粗鲁。 facebook的原始海报请求是(AFAIK)不可能的。我想我可以说“不能做”。此外,要清楚 - 我不是建议他们存储其他用户帐户的密码,而是存储可以发布到他们墙上的单个帐户(他们拥有的)的密码。 – 2011-08-30 05:17:24

相关问题