我目前正在使用Graph API Explorer进行一些测试。这是一个很好的工具。
我想获取用户的好友列表,包括好友的姓名、ID 和图片。所以我输入:
https://graph.facebook.com/me/friends?fields=id,picture,name
但是图片只有 50x50,我想要一个更大的这个请求。
是否可以 ?
我目前正在使用Graph API Explorer进行一些测试。这是一个很好的工具。
我想获取用户的好友列表,包括好友的姓名、ID 和图片。所以我输入:
https://graph.facebook.com/me/friends?fields=id,picture,name
但是图片只有 50x50,我想要一个更大的这个请求。
是否可以 ?
如Facebook 上的这个错误中所述,您现在还可以通过新的 API“字段扩展”语法请求特定的图像大小。
像这样:
https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
让所有朋友(当然也使用该应用程序)获得正确图片尺寸的最佳方法是使用field expansion,或者使用尺寸标签之一(方形、小、正常、大):
/me/friends?fields=picture.type(large)
(编辑:这不再起作用了)
...或者您可以指定宽度/高度:
me/friends?fields=picture.width(100).height(100)
顺便说一句,你也可以这样写:
me?fields=friends{picture.type(large)}
不过,您不需要拉“图片”属性。还有更方便的方法,您唯一需要的是用户名,请参见下面的示例;
https://graph.facebook.com/user_id/picture?type=large
ps 类型定义你想要的大小
请记住,使用具有基本权限的令牌,/me/friends 将仅返回具有 id+name 属性的朋友列表
您可以以像素为单位设置图片的大小,如下所示:
https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)
以类似的方式,type可以使用参数
{user-id}/?fields=name,picture.type(large)
从文档
类型枚举{小,正常,专辑,大,方形}
将字段数组更改id,name,picture为id,name,picture.type(large)
https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>
结果:
{
"id": "130716224073524",
"name": "Julian Mann",
"picture": {
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
}
}
}
如果需要,您也可以尝试根据高度或宽度获取图像
https://graph.facebook.com/user_id/picture?height=
或者
https://graph.facebook.com/user_id/picture?width=
默认情况下,这些值以像素为单位,您只需要提供 int 值
我广泛研究了 Graph API Explorer 并最终找到了 full_picture
https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture
PS 我注意到 full_picture 并不总是提供我想要的全尺寸图像。“附件”确实
https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
嗯……我想我找到了解决办法。
事实上,in 可以只是请求
https://graph.facebook.com/me/friends?fields=id,name
根据http://developers.facebook.com/docs/reference/api/(“图片”部分),可以使用用户 ID 构建个人资料照片的 url
例如,假设用户 id 在 $id 中:
"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"
但这不是最终的图像 URL,所以如果有人有更好的解决方案,我会很高兴知道 :)
您可以在对 Facebook 图形 API 的请求中指定width& :heighthttp://graph.facebook.com/user_id/picture?width=500&height=500
From v2.7,/<picture-id>?fields=images会给你一个不同大小的图像列表,第一个元素是全尺寸图像。
我不知道一次处理多个图像的任何解决方案。
当我提出请求时出现此错误picture.type(full_picture):
“(#100)对于字段'图片':类型必须是以下值之一:小,正常,相册,大,方形”
当我用picture.type(album)and发出请求时picture.type(square),用 50x50 像素大小的图像响应我。
当我使用 发出请求时picture.type(large),会以 200x200 像素大小的图像响应我。
当我用 发出请求时picture.width(800),用 477x477 像素大小的图像响应我。
,picture.width(250)响应 320x320。
,picture.width(50)响应 50x50。
,picture.width(100)响应 100x100。
,picture.width(150)响应 160x160。
我认为当用户第一次添加该照片时,facebook 会给出不同大小的图像。
我在这里看到的用于请求用户图像的 API 不支持调整请求的图像大小。我认为它给出了最接近的图像尺寸。
您可以按如下方式调整其大小。
采用:
https://graph.facebook.com/USER_ID?fields=picture.type(large)
For details: https://developers.facebook.com/docs/graph-api/reference/user/picture/
在 Graph 响应中找到的图片 URL(“ http://photos-c.ak.fbcdn.net/ ”)中,只需将默认的“_s.jpg”替换为“_n.jpg”(?正常大小)或“_b.jpg”(?大尺寸)或“_t.jpg”(缩略图)。
Hacakable URLs/REST API 让 Web 变得更好。
rest-fb 用户(方形图像,更大分辨率): Connection myFriends = fbClient.fetchConnection("me/friends", User.class, Parameter.with("fields", "public_profile,email,first_name,last_name,gender,picture .width(100).height(100)"));
我认为到目前为止,获得朋友大照片的唯一方法是使用 FQL。首先,您需要获取朋友列表:
https://graph.facebook.com/me/friends
然后解析这个列表并提取所有朋友ids。当你拥有它时,只需执行以下 FQL 查询:
SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200
200这里只是一个示例尺寸,您可以输入任何内容。您应该得到以下响应:
{
"data": [
{
"id": ...,
"url": "https://fbcdn-profile-a.akamaihd.net/..."
},
{
"id": ...,
"url": "https://fbcdn-profile-a.akamaihd.net/..."
}
]
}
每个网址都是指向 200x200 像素图像的链接。
我有同样的问题,但我尝试了这个来解决我的问题。它返回大图像。这不是完美的修复,但你可以试试这个。
https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX
尝试通过更改每个 json 对象中 url 的像素大小来更改图像的大小,如下所示:
例如,我将s480x480更改为s720x720
JS 风格的变体。只需设置巨大的大图片宽度,您将获得最大的变体。
FB.api(
'/' + userId,
{fields: 'picture.width(2048)'},
function (response) {
if (response && !response.error) {
console.log(response.picture.data.url);
}
}
);
您可以使用 full_picture 代替图片键来获取全尺寸图像。
注意:从 Graph API v8.0 开始,您must provide the access token对每个 UserID 请求执行。
命中图形 API:
https://graph.facebook.com/<user_id>/picture?height=1000&access_token=<any_of_above_token>
使用火力基地:
FirebaseUser user = mAuth.getCurrentUser();
String photoUrl = user.getPhotoUrl() + "/picture?height=1000&access_token=" +
loginResult.getAccessToken().getToken();
registerCallback你就像这样得到令牌
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
FirebaseUser user = mAuth.getCurrentUser();
String photoUrl = user.getPhotoUrl() + "/picture?height=1000&access_token=" + loginResult.getAccessToken().getToken();
}
@Override
public void onCancel() {
Log.d("Fb on Login", "facebook:onCancel");
}
@Override
public void onError(FacebookException error) {
Log.e("Fb on Login", "facebook:onError", error);
}
});
这就是文档所说的:
从 2020 年 10 月 24 日开始,所有基于 UID 的查询都需要访问令牌。如果您查询 UID 并因此必须包含令牌:
- 对 Facebook 登录身份验证请求使用用户访问令牌
- 对页面范围的请求使用页面访问令牌
- 对服务器端请求使用 App 访问令牌
- 对移动或 Web 客户端请求使用客户端访问令牌
如果您无法使用其他令牌类型之一,我们建议您仅使用客户端令牌。