I’ve been developing in Python for quite a few months now and the need to develop a Facebook app has arrived.
So in my app I had the need to post content to a Fan Page wall and after a couple of tests I noticed the content being posted on the Fan Page on behalf of the Page owner and not the page itself.
To fix that I had to make the following changes inside the if condition where it checks for the arguments being posted:
if post_args is not None:
if post_args['page_token']:
post_args["access_token"] = post_args['page_token']#self.access_token
else:
post_args["access_token"] = self.access_token
else:
args["access_token"] = self.access_token
So now I’m checking for an extra argument in this case page_token, if it’s set we use that token instead of the token that was used to initialize the Facebook Graph object.
With this changes in place we add the extra parameter page_token to our attachment and it shoud work as expected, with the content being posted on behalf of the page.
graph = facebook.GraphAPI(str(access_token))
attach = {
"name": 'Hello world',
"link": 'http://www.example.com',
"caption": 'test post',
"description": 'some test',
"picture" : 'http://www.example.com/picture.jpg'
"page_token" : str(page_token)
}
msg = 'New content posted'
post = graph.put_wall_post(message=msg, attachment=attach,profile_id=str(page_id))
if post:
return 'posted'