在不强制用户登录/允许的情况下嵌入公共 Facebook 页面的活动源

Posted

技术标签:

【中文标题】在不强制用户登录/允许的情况下嵌入公共 Facebook 页面的活动源【英文标题】:Embed activity feed of a public Facebook page without forcing user to login/allow 【发布时间】:2014-12-26 22:48:41 【问题描述】:

这类似于之前被问过几次的问题,但无论我读到什么,我仍然感到困惑。

我有一个公共 Facebook 页面,例如 White Collar,我需要将其活动提要嵌入到我的 android 应用程序中。我了解如何获取 app-id 和 app-secret,但我不明白如何获取短期访问令牌,我知道这是获取长期访问令牌所必需的。

据我了解,这很可能是错误的,用户必须通过应用程序登录才能获得短期访问令牌,但我不希望任何用户必须登录才能查看活动提要。

一旦我有了它,我该如何使用它来将此活动提要带入我的应用程序?

这方面的 Facebook 文档很糟糕,所以我需要一些帮助。

如果它或其他任何东西需要特定于站点的权限,我可以访问相关站点。

谢谢!

【问题讨论】:

【参考方案1】:

要获取公共 Facebook 页面(如 White Collar)的活动源,请按以下步骤操作:

1) 通过选择现有应用或在此网址创建新应用来获取您的 App-id 和 App-secret:

https://developers.facebook.com/apps/

2) 通过向该 url 发出 GET 请求来获取访问令牌:

https://graph.facebook.com/oauth/access_token?client_id=" + APP_ID + "&client_secret=" + APP_SECRET + "&grant_type=client_credentials

3) 获取您的粉丝页面的 page-id。为此,您需要页面名称。转到您在 facebook 上的粉丝页面并查看 url。它将具有这种形式:

https://www.facebook.com/fan-page-name

一旦你有了这个,就向这个 url 发出 GET 请求:

https://graph.facebook.com/fan-page-name?access_token=access-token

它将返回一堆 JSON。您正在寻找第一个“id”元素。这是您的页面 ID。

4) 通过 GET 请求获取粉丝页面 JSON 数据:

https://graph.facebook.com/" + page-id + "/feed?access_token=" + URLEncoder.encodeUTF8(access-token)

为了避免抛出异常,我不得不使用URLEncoder.encodeUTF8(). 您要查找的数据位于“数据”元素下。

我找不到任何可以为我对 Facebook 提要进行 JSON 解析的东西,但我确实找到了这个 tutorial,它会为你做很多格式化,让它看起来像 Facebook。

希望能帮助其他尝试这样做的人。

【讨论】:

+1 获取 Android Hive 文章的链接!我能够轻松地对其进行调整以适应我在 Android 应用中的需求。 对于step3,现在已经不支持了。它会给出错误: "error":"message":"An access token is required to request this resource.","type":"OAuthException","code":104,"fbtrace_id":"FEz1d5Z \/Gnz" 很遗憾听到这个消息!使用旧 api 的应用程序仍然支持它。我希望我有时间为您调试并找出一个新的解决方案。在第 3 步的第 2 部分,您可以尝试使用 URLEncoder.encodeUTF8(<facebookAccessToken>) 以确保它以正确的格式输出。 第2步似乎也被打破了,现在:( Facebook 似乎需要应用程序批准才能为您提供“页面公共内容访问权限”。现在,在对未经批准的全新应用程序使用有效访问令牌后出现此错误:“”(#10)要使用“页面公共内容访问”,您对该端点的使用必须经过 Facebook 的审核和批准。要提交此“页面公共内容访问”功能以供审核,请阅读我们关于可审核功能的文档:developers.facebook.com/docs/apps/review。”

以上是关于在不强制用户登录/允许的情况下嵌入公共 Facebook 页面的活动源的主要内容,如果未能解决你的问题,请参考以下文章

如何允许用户在不登录的情况下使用 Google Form 上传文件?

如何在不使用太多内存的情况下强制下载大文件?

在没有 NSNotificationCenter 的情况下,在 iOS 8 中正确强制或允许 Youtube 嵌入视频的横向模式

以其他用户身份登录后,如何在不退出并重新登录 laravel 7 的情况下返回我的帐户

激活 WDAC 规则 16 不允许在不重新启动的情况下应用策略

如何在不使用数据库的情况下进行登录