如何获取由群组管理员以外的人上传的 Facebook 群组照片? (通过 JavaScript)

Posted

技术标签:

【中文标题】如何获取由群组管理员以外的人上传的 Facebook 群组照片? (通过 JavaScript)【英文标题】:how to get photos of facebook group, as uploaded by people other than group admins? (via JavaScript) 【发布时间】:2011-11-02 20:54:25 【问题描述】:

我正在为一个反映 facebook 组的组建立一个网站,我想从 facebook 中提取该组的任何照片并将它们显示在我的网站上。但是这些照片可能是由完全陌生的人上传的:所以基本上,一个随机的人拍摄了该组的照片并将其上传到 Facebook,我们希望该照片在我们的网站上可见。

我可以想到三种方法来做到这一点:

    将照片标记为组并查找所有标记为组的照片

    您似乎无法通过 Graph API 访问标记为特定组的照片(请证明我错了)。我可以在 FQL 中做到这一点:SELECT images FROM photo WHERE pid in (SELECT pid FROM photo_tag WHERE subject=GROUP_ID),但据我所知,这需要网站访问者登录 facebook 来创建 FB 会话,这不好。

    在我们的 FB 页面上“分享”照片,并以某种方式找到我们在我们的页面上分享的所有照片

    我似乎想不出办法将共享对象的搜索限制为照片,但我愿意接受建议。

    自己将照片重新上传到群组控制的相册中

    嗯。前两个选项不涉及在 facebook 上创建任何新对象,并且会是首选,但我很难做到其中任何一个,这让我不得不从 facebook 下载照片并将它们重新上传到我们的自己的相册,我知道怎么展示。

请告诉我有比 #3 更好的方法吗?

【问题讨论】:

【参考方案1】:

我编写了一个小的 php 应用程序,它将我的 Facebook 新闻提要 (/me/home) 转换为 RSS,并且可以通过 Google Reader 进行订阅。虽然我的项目与发布无关,但我认为您需要一些与我在那里使用的 offline_access 类似的技术。

所以,首先,您需要一个虚拟的 Facebook 用户帐户,该帐户有权在群组中阅读和发布(因为这是一个公共群组,所以您可以省去一些麻烦)

使用“offline_access”和发布所需的其他范围获取此用户的 access_token,例如此处的直接 url 示例http://developers.facebook.com/docs/reference/dialogs/oauth/

然后...将访问令牌硬编码到 PHP 脚本中

$access_token = the access token from oauth;
$facebook->setAccessToken($access_token);

因此,此脚本将充当该用户。浏览镜像网站的任何人甚至不需要 Facebook 帐户。

认证问题解决后,剩下的只是简单的查询、上传、发布的编码。希望这会有所帮助

【讨论】:

我没有使用 PHP,所以我没有使用 PHP facebook api,但我很欣赏这个建议。仍在寻找基于 javascript 的答案。 我认为可以,但不推荐。因为访问令牌将被暴露,JS 可能会在不同的浏览器中反应棘手。您仍然需要首先获得像上面这样的访问令牌。不确定他们的 JS API 中是否有设置访问令牌的功能,但通过启用 'jsonp' 的 $.get() 函数,jQuery 将是一个不错的选择。 哦等等...我不得不说这是强烈不推荐的。因为人们可以使用 JS 控制台的代码注入来搞乱虚拟帐户。 (我刚刚用 firebug 进行了测试,遗憾的是注入成功了......)我不确定仅仅取消发布权是否会避免这种威胁。 我有一个应用程序,而不是一个虚拟帐户,它的权限非常有限......我问了一个单独的问题facebook.***.com/questions/8124279/…“向客户端公开访问令牌有多安全? "而且我还没有得到明确的答案,但据我了解,这里没有发生任何危险的事情。

以上是关于如何获取由群组管理员以外的人上传的 Facebook 群组照片? (通过 JavaScript)的主要内容,如果未能解决你的问题,请参考以下文章

Linux之用户权限管理

如何禁止群成员在qq群共享上传文件?

如何以不同的人身份发布到 Facebook 墙上

如何使用 Facebook Graph API 获取群组视频列表?

如何在 WiFi Direct 中获取非群组所有者的 IP 地址?

ACL权限和特殊权限setuidsetgid管理使用