我正在使用Facebook的图形API,并试图获得用户当前 Profiles 图片的两种不同图片大小 . 一张图片我希望尺寸为250x250,另一张图片我希望尺寸为1080x1080 . 这是我目前的代码:
let params = ["fields": "first_name, last_name, email, picture.width(1080).height(1080)"]
let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: params)
graphRequest.startWithCompletionHandler { (connection, result, error) in
if error != nil {
print(error)
}
}
这会将URL返回到大小为1080x1080的图片并且可以正常工作 . 现在,如果我更改params以添加对250x250大小的图片的请求:
let params = ["fields": "first_name, last_name, email, picture.width(250).height(250), picture.width(1080).height(1080)"]
我得到这个错误基本上说我不能多次使用字段 picture
:
Syntax error "Field picture specified more than once. This is only possible before version 2.1" at character 94: first_name, last_name, email, picture.width(250).height(250), picture.width(1080).height(1080)
这是否意味着实现我想要的唯一方法是制作batch request?如果是这种情况,是否有一个函数在两个批处理请求完成后被调用?
3 回答
通过使用field aliasing只有一个非批处理请求,还有另一种(更好的)方法,我最近遇到同样的问题时遇到了这种情况 .
在OP的情况下,fields参数将设置为:
然后,响应将包括名为picture_small和picture_large的两个字段,其包含相应的图片数据 . 例如:
这对我来说可以获得大尺寸的图像 . 检查以下查询 .
NSString * graphPath = [NSString stringWithFormat:@"%@?fields=photos.fields(id,link,source)", albumID];
你有两个解决方案:
无聊的是提出两个要求 . 而更好的解决方案是发出批量请求:
这是我的 Profiles 的cURL批量请求,它有效:
您只需要放置访问令牌即可 .