在不强制用户登录/允许的情况下嵌入公共 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 的情况下返回我的帐户