如何为没有app或app secret的页面获取Facebook访问令牌

时间:2012-06-28 03:14:41

标签: facebook graph token

我正在尝试从另一个网站的Facebook页面自动显示墙上的帖子。我可以使用Graph API资源管理器手动获取一个。当我在代码中使用生成的令牌时,一切都很好。问题是令牌很快就会到期。每天多次获取新代码是不切实际的。我知道有一种方法可以以编程方式请求访问令牌 - 在我的情况下通过PHP,但所有示例都需要一个app秘密。由于这是一个页面而不是应用程序,所以没有秘密。

我试过这个:

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=MY_CLIENT_ID&redirect_uri=http%3A%2F%2FMY_SITE_URL&scope=user_status

我得到的是:

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

我尝试使用Fiddler截取来自Graph API资源管理器的调用,以查看我的代码文件中需要什么,但没有任何运气。

2 个答案:

答案 0 :(得分:14)

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

  2. 烫发的交换令牌(更长的令牌)
    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)

  3. 访问此页面,找到要发布的PAGE并复制新的access_token https://graph.facebook.com/me/accounts?access_token=(来自link2)

  4. 使用此最后一个令牌(表单link3)以app

  5. 发布到页面
  6. 请注意,因为它将在60天后过期。 (FB不再提供无限制的离线访问令牌)

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

    编辑(2016年2月):令牌现在“通常”会在60天后过期,但可以随时失效。

答案 1 :(得分:1)

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

您的app_id永远不会更改,因此您无需续订。问题是墙壁内容是你的吗?

如果是这样,您可以轻松使用app_id来完成此操作,而无需每次都请求访问令牌。

但是,为了拥有app_id,您需要在facebook上使用facebook开发者帐户创建一个应用程序。据我所知,没有办法匿名向Graph API发出请求,