Facebook FQL multiquery in iOS SDK

前端 未结 1 613
你的背包
你的背包 2020-12-15 11:40

I am looking for some documentation or sample code on how to send multiquery fql requests to Facebook via iOS SDK. I found some older samples but they doesnt work for me. I

相关标签:
1条回答
  • 2020-12-15 12:07
    // 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];
    

    The the delegate FBRequestDelegate will be call with the response. Depending on your needs, you'll do something like:

    - (void)request:(FBRequest*)request didLoad:(id)result {
        NSLog(@"didLoad() received result: %@", result);
    }
    

    The facebook object is created like:

    Facebook * facebook = [[Facebook alloc] initWithAppId:kAppID];
    

    More info on how to set this up can be found here: https://developers.facebook.com/docs/guides/mobile/

    And depending on your FQL query, you will need permissions from the user. See the list of permissions here: https://developers.facebook.com/docs/authentication/permissions/

    There is also a test console for FQL queries here: https://developers.facebook.com/docs/reference/rest/fql.query/

    And if you want to do an Multiquery instead of a single query, it would look like:

    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];
    
    0 讨论(0)
提交回复
热议问题