2020 年 10 月 24 日 Facebook will start blocking profile photos URLs如果用户 ID 不是 App-Scoped 用户 ID (ASID)。
我们在 Facebook 切换到 ASID 之前在我们的网站上实现了 Facebook 登录,因此我们在它之前有很多注册用户。问题是,对于这些老用户,Facebook 向我们报告的是他们的全局用户 ID (UID) 而不是 ASID。 “对于已经登录您的应用程序的人,ID 不会更改。它将保持锁定为用户的原始 Facebook ID。” ( source )。而且我们找不到为他们获取 ASID 的方法(这些答案不再有效:1 和 2)
在这些情况下,经典的 Facebook 个人资料 URL 将停止工作:
现状:
https://graph.facebook.com/4/picture
从 10 月 24 日开始,它将不起作用:
https://graph.facebook.com/4/picture?breaking_change=profile_picture
在 JSON 身份验证 token 的“图片”参数中,我们得到一个照片 URL,但它来自 Facebook CDN,它可能会过期(每次用户登录时它都会更改,即使几乎没有时间过去)。
所以问题是:我们如何才能为实现 ASID 之前在我们网站上注册的用户生成一个公开的稳定的、永久的图片 URL?
我们不能将访问 token 添加到 URL,因为它将在网站中公开使用(我们不下载图像,只是内联它们)。
最佳答案
Facebook API PM 在这里。此处最好的做法是在您获取图像的请求中使用客户端 token 。这在大多数图形 API 上通常是不允许的,但在这里是为了更容易迁移这样的案例。
与应用 token 不同,客户端 token 可以安全地暴露给用户,并用于此类情况。
关于facebook - 如何为非 App-Scoped 用户 ID 构建永久和公开的 Facebook 个人资料照片 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64267471/