有没有办法将@mention插入到pyfacebook发布的Facebook状态更新中?

时间:2009-11-24 02:29:43

标签: facebook fbml facebook-wall

我的应用程序中有以下代码:

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将其转换为所述用户的个人资料链接?

5 个答案:

答案 0 :(得分:4)

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

  

@ [139730900025:PhotoGrabber]非常棒

代表链接,但我无法做到这一点。我在facebook论坛的“Stream”类别下重新发布了一个帖子,因为你的帖子没有得到任何关注:

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

答案 1 :(得分:1)

现在可以通过打开图表部分提及它。您只能在发布打开的图表时使用ACTION

检查: https://developers.facebook.com/docs/opengraph/mention_tagging/

似乎仍然无法通过API

在经典Feed发布中使用@mention标记

答案 2 :(得分:0)

我很确定目前这是不可能的。如果它是通过使用tam7t建议它应该工作的格式是可行的...你最好的选择是要求他们将它添加到他们的api流解析器。

答案 3 :(得分:0)

目前这是不可能的,抱歉。

答案 4 :(得分:0)

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

注意:这可能违反了Facebook的申请服务条款。

编辑: 下面是一些使用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 = 'user@example.com'
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在墙上很好,但是这个方法并没有将帖子传播到提到的用户/页面的墙。不确定这对你来说是否重要。