当第二个(子)请求依赖于第一个(父)请求时,我试图弄清楚如何编写 FB Graph API 请求(FB SDK 4.0 和 Swift)。具体来说,我想获取用户的相册和每个相册的封面照片。
me/albums?fields=name,cover_photo <-- 获取用户相册请求
/888474748 <-- 获取封面照片请求
文档对此和 FBSDKGraphRequestConnection 的 API 文档非常模糊。提到方法 addRequest:completionHandler:batchParameters: 可以接受“name”和“depends_on”等参数。这似乎是我正在寻找的方法,但我可以找到它在 Obj-C 或 Swift 中使用的示例。
它应该看起来像这样吗?谢谢!
let albumRequest = FBSDKGraphRequest(graphPath: "me/albums?fields=name,cover_photo", parameters: nil)
let albumCoverRequest = FBSDKGraphRequest(graphPath: "cover_photo_id", parameters: nil) //what should this look like? jsonpath?
let graphConnection = FBSDKGraphRequestConnection()
graphConnection.addRequest(albumRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in
if(error != nil){
println(error)
}else{
}
},batchParameters: ["name" : "albums"])
graphConnection.addRequest(albumRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in
if(error != nil){
println(error)
}else{
}
},batchParameters: ["depends_on" : "albums"]) //should this be some jsonpath expression?
最佳答案
明白了。
let albumRequest = FBSDKGraphRequest(graphPath: "me/albums?fields=name,cover_photo", parameters: nil)
let albumCoverRequest = FBSDKGraphRequest(graphPath: "?ids={result=albums:$.data.*.cover_photo}", parameters: nil) // use jsonpath syntax to "inject" parent results into "child" request
let graphConnection = FBSDKGraphRequestConnection()
graphConnection.addRequest(albumRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in
if(error != nil){
println(error)
}else{
println(result)
}
},batchParameters: ["name" : "albums"]) //Set "parent" batch alias
graphConnection.addRequest(albumCoverRequest, completionHandler: { (connection:FBSDKGraphRequestConnection!, result:AnyObject!, error:NSError!) -> Void in
if(error != nil){
println(error)
}else{
println(result)
}
},batchParameters: ["depends_on" : "albums"]) //depend on parent batch alias
graphConnection.start()
关于ios - Facebook iOS SDK 和 Swift - 如何创建相关批量请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30044110/