6

我正在尝试从另一个网站的 Facebook 页面自动显示墙贴。我可以使用 Graph API explorer 手动获取一个。当我在我的代码中使用生成的令牌时,一切都很好。问题是令牌很快过期。一天多次获取新代码是不切实际的。我知道有一种以编程方式请求访问令牌的方法——在我的例子中是通过 PHP,但所有示例都需要应用程序机密。由于这是一个页面而不是应用程序,因此没有秘密。

我试过这个:

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

我得到的是这样的:

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

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

4

2 回答 2

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. 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= (来自link1)

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

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

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

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

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

于 2012-06-28T04:59:52.167 回答
1

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

您的 app_id 永远不会更改,因此您不必更新它。问题是墙的内容是你的吗?

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

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

于 2012-06-28T19:04:45.440 回答