我正在尝试从另一个网站的Facebook页面自动显示墙上的帖子。我可以使用Graph API资源管理器手动获取一个。当我在代码中使用生成的令牌时,一切都很好。问题是令牌很快就会到期。每天多次获取新代码是不切实际的。我知道有一种方法可以以编程方式请求访问令牌 - 在我的情况下通过PHP,但所有示例都需要一个app秘密。由于这是一个页面而不是应用程序,所以没有秘密。
我试过这个:
我得到的是:
{ “错误”:{ “message”:“验证应用程序时出错。由于系统错误,无法获取应用程序信息。”, “type”:“OAuthException”, “代码”:101 } }
我尝试使用Fiddler截取来自Graph API资源管理器的调用,以查看我的代码文件中需要什么,但没有任何运气。
答案 0 :(得分:14)
使用app-id构建此链接以授权管理页面 https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=MY_SITE_URL&scope=manage_pages&response_type=token
烫发的交换令牌(更长的令牌)
https://graph.facebook.com/oauth/access_token?client_id=MY_CLIENT_ID&client_secret=MY_CLIENT_SECRET&grant_type=fb_exchange_token&fb_exchange_token=(from link1)
访问此页面,找到要发布的PAGE并复制新的access_token https://graph.facebook.com/me/accounts?access_token=(来自link2)
使用此最后一个令牌(表单link3)以app
请注意,因为它将在60天后过期。 (FB不再提供无限制的离线访问令牌)
编辑(2013年10月24日):第5点不再为真,从长期用户令牌生成的页面访问令牌不会过期。
编辑(2016年2月):令牌现在“通常”会在60天后过期,但可以随时失效。
答案 1 :(得分:1)
对于非私人(公共)的图表对象,您可以将app_id用作access_token。
您的app_id永远不会更改,因此您无需续订。问题是墙壁内容是你的吗?
如果是这样,您可以轻松使用app_id
来完成此操作,而无需每次都请求访问令牌。
但是,为了拥有app_id,您需要在facebook上使用facebook开发者帐户创建一个应用程序。据我所知,没有办法匿名向Graph API发出请求,