Facebook的api文档很复杂的样子。为了用api自动在Facebook Page上发表状态,大概研究了一下。
这篇主要是作为笔记 TL;DR
比较麻烦的是授权。要先通过https://www.facebook.com/dialog/oauth?client_id=******&redirect_uri=******&scope=manage_pages,publish_stream获得权限。
要拿到client_id
需要新建一个app,然后在app的管理页面找到app id
。同时为了接收返回的代码,要自己做一个页面作为redirect_uri
,返回的代码会作为GET
参数,可以用页面显示出来,也可以去url里扣。
之后把返回的code
放进https://graph.facebook.com/oauth/access_token?client_id=******&redirect_uri=******&client_secret=******&code=******。其中client_secret
是app的app secret
,也可以在app的管理页面找到。
同样的会有一些返回的参数,需要的是access token
,这是用来访问用户信息的,填入https://graph.facebook.com/me/accounts?access_token=******
现在就可以看到用来访问页面的access token了。可以到https://developers.facebook.com/tools/debug/accesstoken/验证一下。
访问用户信息的access token是一个小时有效的,而访问页面的是不会过期的。如果只是Facebook Page的管理员自己用这个app来管理这个页面的话,app不需要公开,也不用申请review什么的。在获得权限的时候会有提示说部分权限无法获得,忽略就可以了,其实权限是有的。
发布状态的时候用POST
方式向https://graph.facebook.com/{page_id}/feed提交message
和access_token
两个参数,其中access_token就是访问页面所用的那个。{page_id}
要替换成Facebook Page的id,在验证access token那一步可以找到。