使用Facebook API获取页面上的所有照片

15

我是Facebook API的新手,但我需要获取一个Facebook页面上的所有照片。我成功地得到了一条Graph API查询语句,它返回页面上只有第一个创建的相册中的所有图片,这就是头像相册。例如:

https://graph.facebook.com/227843870675663/photos

但我需要对页面中所有其他现有的相册执行相同的操作。非常感谢您提供任何指导。

2个回答

37

试一下这个方法,并告诉我你的进展如何。我已成功从一个Facebook页面中获取了所有照片。

  1. 确保你是 Facebook 页面的管理员。

  2. 前往:http://developers.facebook.com/tools/explorer

  3. 在 API Navigator 中,你可以访问 /me 来查看你自己的基本信息。

  4. 尝试输入 /me/accounts 看看是否能看到任何内容。它应该会给你一个错误提示。

  5. 你需要启用某些权限才能进行此 Graph 查询。选择右侧边栏中的相关权限。根据此文档,你需要使用 pages_show_listpages_read_engagement 权限来进行此查询。

  6. 点击 “获取访问令牌”,这将为您提供具有更新权限的新令牌。你可能会弹出一个窗口,在窗口中确认你希望这个访问令牌能够查看哪些页面。

  7. 现在再次尝试 /me/accounts。你应该能在查看窗口中看到你启用访问权限的页面列表。

  8. 找到你想要查询的 Facebook 页面,并点击 “id” 字段。这个 ID 是进行与此页面相关的任何查询所必需的。

  9. 接下来,在左侧窗口中,你可以看到 “Node: ” 和一个 + 符号。点击这个符号以查看你有哪些选项。

  10. 点击 + 符号并向下滚动到 “connections”,然后选择 “Albums”

  11. 在子层级中,选择 “Photos”

  12. 在“Photos”子级中,选择“source”

  13. 现在点击右边的 “提交”

    如果以上方法不起作用,你可以尝试将以下 URL 复制到 API explorer 中:

YOUR_PAGE_ID/?fields=albums.fields(photos.fields(source))

您将看到一段JSON,其中包含您选择的Facebook页面中某些或所有照片的URL。

  • 点击"获取代码"按钮,它会显示用于访问此信息的Javascript或原始URL。

    "cURL"选项卡将显示URL,其外观类似于:

  • https://graph.facebook.com/v15.0/YOUR_PAGE_ID?fields=albums.fields(photos.fields(source))&access_token=YOUR_ACCESS_TOKEN_HERE
    

    您可以复制该URL并将其粘贴到您的浏览器中。您应该可以看到所有照片的JSON数据以及每张照片在Facebook CDN上对应的URL。

    获取发布到动态而不仅仅是相册中的照片

    为此,您需要运行稍微不同的查询:

    https://graph.facebook.com/v15.0/YOUR_PAGE_ID/feed?fields=attachments
    

    获取高分辨率图像

    上述查询提供的许多图像URL仅提供高达720px的分辨率。如果您想要更高分辨率的图像,则需要找到每个子附件的target.id,并为每个图像执行单独的图形查询以获取其他分辨率。操作如下:

    https://graph.facebook.com/v15.0/YOUR_IMAGE_ID?fields=images
    

    注意令牌过期

    上面生成的令牌只能使用约1-2小时。如果你想要更长时间的令牌,请按照这篇文章中的步骤进行操作。


    2
    谢谢!这正是我在寻找的。可以直接访问页面上的照片。 - lbrahim
    让我知道进展如何。/accounts 基本上是你管理的页面。 - Max
    问题是,访问令牌仅由获得访问令牌的用户继承,其必须遵循此设置以获得访问令牌吗?如果用户不再是管理员会发生什么?是否有一种方法将其置于应用程序下以访问 Facebook 粉丝页相册? - zearth
    1
    @Max的回答是正确的,但如果我们想要获取全部照片,我们需要考虑将URL更改为:/me?fields=albums.fields(photos.limit(99999).fields(id))&limit=99999 - Yura Shinkarev
    1
    如果我不是页面的管理员,但只想访问公开照片,该怎么办? - Isomorphic
    显示剩余10条评论

    6

    当你获取你的Facebook用户时,你可以:

    它们分别需要以下权限:

    • user_photos或friends_photos
    • 不需要
    • user_photos或friends_photos

    更新:

    如果你想从一个Facebook页面获取这些信息:

    • 照片 - 页面上传的照片。
    • 相册 - 页面上传的照片集。

    权限为:任何有效的访问令牌或用户访问令牌。


    1
    感谢您的帮助。但我的问题围绕着一个Facebook页面而不是Facebook用户。据我所知,页面是公开的,我不需要任何授权来访问它。至少,要获取该页面中的所有照片,不需要授权。对于通知,也许必须喜欢那个页面。如果我错了,请纠正我。 - lbrahim
    再次感谢。但是我已经用我自己的 ID 替换了你提供的 ID,结果还是一样。我只能从页面的第一个相册中获取所有照片。我需要该页面的所有照片。 链接 - lbrahim
    获取所有相册的列表,对于每个相册获取所有照片的列表,这样就可以正常工作。 - glautrou
    好的!谢谢。我想这也是一种方法。但我在想是否有API可以直接将所有照片提取到一个数组中。 - lbrahim
    不是的 :) 但API中的逻辑是正确的,可以区分存储在相册中的图像和其他图像。 - glautrou
    如何获取图片URL? - Shajeel Afzal

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接