Question

I have some code like the following in my application:

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'
)

Is there any way to represent a facebook @mention in the message string so that facebook converts it to a profile link for the mentioned user?

Was it helpful?

Solution

Mention it's partially available by open graph now. You can use only when posting an open graph ACTION

Check: https://developers.facebook.com/docs/opengraph/mention_tagging/

It seems still impossible to use @mention tagging in classic feed posting via API

OTHER TIPS

I've also been looking for an answer to this. The facebook website uses the format:

@[139730900025:PhotoGrabber] is awesome

to represent the links but I haven't been able to make that work. I re-posted a thread on the facebook forum under the "Stream" category since your post wasn't getting any attention:

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

I'm pretty sure this is impossible at the moment. If it were posible by using the format that tam7t suggested it should work... Your best bet is asking them to add that to their api stream parser.

This is not possible at the moment, sorry.

AFAIK facebook's API does not allow this. The only approach that I know of at the moment would be to write a screen scraper to do these posts using the format described by tam7t's answer. If you use the mobile version of facebook's site (m.facebook.com) it makes it much easier.

NOTE: This might be a violation of Facebook's Application TOS.

Edit: Here is some ruby code that will do the trick, using the 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

NOTE: Obviously (as tiagoboldt kindly pointed out) it would be wrong to store / utilise the credentials of other people in your application. This approach would only be appropriate for making posts from a facebook account that you controlled.

That said, back to the original question of putting an @mention in a wall post, I have noticed that whilst the post and @mention go up on the wall fine, this method does not propagate the post to the mentioned user/page's wall. Not sure if that is important to you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top