【发布时间】:2012-07-11 15:34:22
【问题描述】:
我现在正在开发一个主要基于 facebook graph api 的 Web 应用程序。 我持有一些关于用户的数据——实际上,可能是可用的公共数据——例如姓名和身份证。 我也知道个人资料图片是公共数据的一部分,我想知道如何仅通过使用用户的 id 才能获得指向用户个人资料图片的直接链接?
提前致谢
【问题讨论】:
标签: facebook facebook-graph-api
我现在正在开发一个主要基于 facebook graph api 的 Web 应用程序。 我持有一些关于用户的数据——实际上,可能是可用的公共数据——例如姓名和身份证。 我也知道个人资料图片是公共数据的一部分,我想知道如何仅通过使用用户的 id 才能获得指向用户个人资料图片的直接链接?
提前致谢
【问题讨论】:
标签: facebook facebook-graph-api
http://graph.facebook.com/" + facebookId + "/picture?type=square 例如: http://graph.facebook.com/67563683055/picture?type=square
除了“方形”之外,还有更多的尺寸。见the docs。
2020 年 9 月更新
由于 Facebook 更新了他们的文档,这种方法在没有令牌的情况下不再有效。您需要附加某种access_token。您可以在graph api of user picturegraph api of user picture的 fb 文档中找到更多信息以及如何正确执行此操作
需求变更 此端点支持应用范围用户 ID (ASID)、用户 ID (UID) 和页面范围用户 ID (PSID)。目前您可以无要求地查询 ASID 和 UID。但是,从 2020 年 10 月 24 日开始,所有基于 UID 的查询都需要访问令牌。如果您查询一个 UID,因此必须包含一个令牌:
对 Facebook 登录身份验证请求使用用户访问令牌
对页面范围的请求使用页面访问令牌
对服务器端请求使用应用访问令牌
对移动或 Web 客户端请求使用客户端访问令牌
fb 文档的引用
【讨论】:
https://graph.facebook.com/{facebookId}/picture?type=large&width=720&height=720。
您可以使用以下网址获取不同大小的个人资料图片。 请确保将 Facebook id 添加到 url。
大尺寸照片 https://graph.facebook.com/{facebookId}/picture?type=large
中等尺寸的照片 https://graph.facebook.com/{facebookId}/picture?type=normal
小尺寸照片 https://graph.facebook.com/{facebookId}/picture?type=small
方形照片 https://graph.facebook.com/{facebookId}/picture?type=square
【讨论】:
获取最大尺寸的图片
https://graph.facebook.com/{userID}?fields=picture.width(720).height(720)
或任何其他您需要的尺寸。根据经验, type=large 并不是您可以获得的最大结果。
【讨论】:
/OBJECT_ID/picture 返回到对象图片的重定向(在本例中为用户)/OBJECT_ID/?fields=picture 返回图片的网址例子:
<img src="https://graph.facebook.com/4/picture"/> 使用 HTTP 301 重定向到 Zuck 的个人资料图片
https://graph.facebook.com/4?fields=picture 返回 URL 本身
【讨论】:
这将是有用的链接:
http://graph.facebook.com/893914824028397/picture?type=large&redirect=true&width=500&height=500
您可以根据需要设置高度和宽度
893914824028397 是 facebookid
【讨论】:
2020 年 9 月更新
Facebook 有新的要求变更:所有基于 UID 的查询都需要访问令牌
所以你必须将你的应用访问令牌添加到 url:
https://graph.facebook.com/{profile_id}/picture?type=large&access_token={app_access_token}
要获取您的app_access_token,请使用以下网址:
https://graph.facebook.com/oauth/access_token?client_id={your-app-id}&client_secret={your-app-secret}&grant_type=client_credentials
您可以在 Facebook 开发人员的 Facebook 应用的基本设置中找到 your-app-id 和 your-app-secret
【讨论】:
这是一个 API,当为各种社交网络(包括 Twitter、Facebook、Instagram 和 gravatar)提供用户名时,它会返回个人资料图像。它拥有适用于 iOS、Android、Ruby、Node、PHP、Python 和 JavaScript 的库。
【讨论】:
您可以使用此网址获得它:您将获得图片高清(最大尺寸)
https://graph.facebook.com/{userID}?fields=picture.width(720).height(720)&redirect=false
不要忘记redirect=false,否则会返回错误
【讨论】:
在 img 标签的 src 中使用 url 作为:https://graph.facebook.com/user_id/picture?type=square。 类型可以是small,large。
【讨论】:
您可以为此使用 AngularJs,它的双向数据绑定功能将以最少的工作量和更少的代码获得解决方案。
<div>
<input type="text" name="" ng-model="fbid"><br/>
<img src="https://graph.facebook.com/{{fbid}}/picture?type=normal">
</div>
我希望这能回答您的问题。注意:您也可以使用其他库。
【讨论】:
通过Javascript SDK (v2.12 - April, 2017)可以通过这种方式获取图片请求的详细信息:
FB.api("/" + uid + "/picture?redirect=0", function (response) {
console.log(response);
// prints the following:
//data: {
// height: 50
// is_silhouette: false
// url: "https://lookaside.facebook.com/platform/profilepic/?asid=…&height=50&width=50&ext=…&hash…"
// width: 50
//}
if (response && !response.error) {
// change the src attribute of img elements
[...document.getElementsByClassName('fb-user-img')].forEach(
i => i.src = response.data.url
);
// OR redirect to the URL above
location.assign(response.data.url);
}
});
为了获取 JSON 响应,参数 redirect 以 0(零)为值很重要,因为请求默认重定向到图像。您仍然可以在同一 URL 中添加其他参数。例子:
"/" + uid + "/picture?redirect=0&width=100&height=100":将返回一个 100x100 的图像;"/" + uid + "/picture?redirect=0&type=large":返回一个 200x200 的图像。其他可能的类型值包括:small、normal、album 和 square。【讨论】:
根据当前最新的 Facebook API 版本 3.2,对于用户,您可以使用此通用方法获取个人资料图片https://graph.facebook.com/v3.2/{user-id}/picture?type=square,您可以访问用户图片文档here。 URL中type参数的可能值可以是small、normal、album、large、square
对于群组和Pages,个人资料图片不能直接使用。您必须使用访问令牌获取它们。对于组,您必须使用用户访问令牌,对于页面,您可以同时使用用户访问令牌和页面访问令牌。
您可以使用通用 URL:https://graph.facebook.com/v3.2/{user-id}/picture?access_token={access-token}&type=square 获取群组或主页的个人资料图片
我希望这对正在寻找主页或群组资料图片的人有所帮助。
【讨论】:
只需按照以下网址进行操作
https://graph.facebook.com/facebook_user_id/picture?type=square
类型可以是普通、小、中、大。或者正方形(如果你想得到正方形的图片,正方形的大小限制为50x50)。
【讨论】:
今天我发现一个问题,头像返回默认头像,因为new requirement from Facebook对所有基于UID的查询,所以只需将&access_token=[apptoken]添加到url,您可以获得您的应用令牌from here
【讨论】:
您可以使用以下端点来获取 image.jfif 而不是 jpg:
https://graph.facebook.com/v3.2/{user-id}/picture
请注意,您将无法看到该图像,只能下载它。
【讨论】:
2021 年 7 月更新
在@EddyG 的回答之上,事实证明,如果您仍然无法使用应用访问令牌获取个人资料图片,则 FB 帐户必须首先“允许”FB 应用程序,然后您应该能够获取个人资料图片带有 FB 应用访问令牌。
【讨论】: