如何为没有应用程序或应用程序机密的页面获取Facebook访问令牌



我正在尝试自动显示来自Facebook页面或其他网站的墙帖。我可以使用Graph API资源管理器手动获取一个。当我在代码中使用生成的令牌时,一切都很好。问题是代币很快过期。每天获取几次新代码是不现实的。我知道有一种方法可以通过程序请求访问令牌——在我的例子中是通过PHP,但所有的例子都要求应用程序保密。由于这是一个页面,而不是一个应用程序,所以没有什么秘密。

我试过这个:

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=MY_client_id&redirect_uri=http%3A%2F%2FMY_SITE_URL&scope=用户状态

我得到的是:

{"错误":{"message":"验证应用程序时出错。由于系统错误,无法获取应用程序信息。","type":"OAuthException","代码":101}}

我曾尝试使用Fiddler拦截Graph API资源管理器的调用,以查看我的代码文件中需要什么,但运气不佳。

  1. 使用应用程序id构建此链接以授权管理页面https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=MY_SITE_URL&scope=manage_pages&response_type=令牌

  2. 将令牌交换为perm(较长的令牌(
    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=(来自链接1(

  3. 访问此页面,找到要发布的页面并复制新的access_tokenhttps://graph.facebook.com/me/accounts?access_token=(来自链接2(

  4. 使用此最后一个令牌(表单链接3(作为应用发布到页面

  5. 请注意,它将在60天后过期。(FB不再提供无限离线访问令牌(

编辑(2013年10月24日(:第5点不再为真,由长期用户令牌生成的页面访问令牌不会过期

编辑(2016年2月(:代币现在"通常"在60天后到期,但可以随时失效。

对于非私有(公共(的图形对象,您可以将app_id用作access_token。

你的app_id永远不会更改,所以你永远不必续订。问题是墙内容是你的吗?

如果是这样,您可以很容易地使用app_id来实现这一点,而不必每次都请求访问令牌。

然而,为了有一个app_id,你需要在脸书上创建一个带有脸书开发者帐户的应用程序。据我所知,没有办法匿名向Graph API、提出请求

最新更新