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

问题描述 投票:0回答:2

我正在尝试自动显示来自另一个网站的 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=user_status

我得到的回报是这样的:

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

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

facebook facebook-graph-api token
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=(来自链接1)

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

  4. 使用最后一个令牌(形式链接3)作为应用程序发布到页面

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

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

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


1
投票

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

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

如果是这样,您可以轻松使用

app_id
来完成此操作,而不必每次都请求访问令牌。

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

© www.soinside.com 2019 - 2024. All rights reserved.