我正在寻找一些关于如何通过 iOS SDK 向 Facebook 发送多查询 fql 请求的文档或示例代码。
我找到了一些较旧的样本,但它们对我不起作用。
我用查询填充了 NSDictionary
并尝试通过以下方式发送请求
[[FBRequest requestWithDelegate:self] call:@"facebook.fql.multiquery"params:params];
,如我已阅读的示例中所述,但我收到“无法识别的选择器发送到类”错误,我也无法在 FBRequest.h 中找到“requestWithDelegate”方法。它被弃用了吗?
对此提供一些帮助将不胜感激!
最佳答案
// Construct your FQL Query
NSString* fql = [NSString stringWithFormat:@"SELECT uid, name, hometown_location from user where uid IN (SELECT uid2 FROM friend WHERE uid1=%lld) and hometown_location != '' ORDER BY rand() limit 4", facebookId];
// Create a params dictionary
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObject:fql forKey:@"query"];
// Make the request
[facebook requestWithMethodName:@"fql.query" andParams:params andHttpMethod:@"GET" andDelegate:self];
委托(delegate) FBRequestDelegate 将通过响应被调用。根据您的需要,您可以执行以下操作:
- (void)request:(FBRequest*)request didLoad:(id)result {
NSLog(@"didLoad() received result: %@", result);
}
facebook 对象的创建方式如下:
Facebook * facebook = [[Facebook alloc] initWithAppId:kAppID];
有关如何设置的更多信息,请参见此处: https://developers.facebook.com/docs/guides/mobile/
并且根据您的 FQL 查询,您将需要用户的权限。请在此处查看权限列表: https://developers.facebook.com/docs/authentication/permissions/
这里还有一个 FQL 查询的测试控制台: https://developers.facebook.com/docs/reference/rest/fql.query/
如果你想做一个多查询而不是一个单一的查询,它看起来像:
NSString* fql1 = [NSString stringWithFormat:
@"select uid2 from friend where uid1 == %lld order by rand() limit 10", facebookId];
NSString* fql2 = [NSString stringWithFormat:
@"select uid, name from user where uid in (select uid2 from #queryID)"];
NSString* fql3 = [NSString stringWithFormat:
@"select uid, status_id, message from status where uid in (select uid from #queryName) limit 1"];
NSString* fql = [NSString stringWithFormat:
@"{\"queryID\":\"%@\",\"queryName\":\"%@\",\"queryStatus\":\"%@\"}",fql1,fql2,fql3];
NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@"queries"];
[facebook call:@"fql.multiquery" params:params];
关于iphone - iOS SDK 中的 Facebook FQL 多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022522/