【问题标题】:How to get a Facebook access token for a page with no app or app secret如何为没有应用程序或应用程序密码的页面获取 Facebook 访问令牌
【发布时间】:2012-06-29 13:23:39
【问题描述】:

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

我得到的是这样的:

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

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

【问题讨论】:

  • “因为这是一个页面,而不是一个应用程序,所以没有什么秘密。” – 好吧,那就创建一个应用程序,让事情变得更容易“解决方法”没有实际的应用程序。您不需要设置任何应用程序页面、画布或页面选项卡 url - 只需创建应用程序,并可能设置一个用于登录的域,然后使用该应用程序获取访问令牌,使其长期存在,并查询带有这些令牌的图形 API。

标签: facebook graph token


【解决方案1】:
  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=(fromlink1)

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

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

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

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

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

【讨论】:

  • 感谢您的快速响应。当我尝试第一步时,我得到“发生错误。请稍后再试。”我在这个过程中尝试了类似的步骤,这就是我通常得到的回应。另外,我不想管理页面或发布到页面。我只想从页面上阅读墙上的帖子并将它们发布到另一个站点。最后,页面有秘密吗?我知道应用程序可以,但这不是应用程序。这是试图解决这个问题的一大挫折,几乎每个例子都假设你试图附加到一个应用程序,而不是一个页面。再次感谢。
  • 您是否更改了 CLIENT_ID 和 SITE_URL 变量?
  • 为什么“第五点不再正确”???真的它的有效期是60天还是无限的? facebooksdk.net/docs/web/handling-expired-access-tokens
【解决方案2】:

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

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

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

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

【讨论】:

  • 作为公司的 Web 开发人员,我已获得该页面的管理员访问权限。我想我需要在 Facebook 术语方面对自己进行更好的教育。它把我搞糊涂了。我不明白创建应用程序会有什么帮助,但现在已经推荐了两次。即使我这样做了,如何在应用程序和现有页面之间建立关联?
  • 没关系。现在说得通了。我刚刚创建了一个应用程序并请求了一个访问令牌,而墙上的帖子又可以工作了。谢谢。
  • 我尝试使用 app_id 作为访问令牌将数据发布到我的 Facebook 页面,但我收到错误“无效的 OAuth 访问令牌。”。如果您有任何示例代码,请更新。
猜你喜欢
  • 2013-08-05
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
相关资源
最近更新 更多