进行Facebook查询时没有返回任何结果

时间:2011-07-21 08:31:45

标签: objective-c ios facebook facebook-fql

我正在尝试使用Facebook查询获取援助列表(专辑ID)。

有效:

从浏览器运行查询会返回结果,但是当我使用Facebook Connect运行它时,不会返回任何值。

我遇到的问题是专辑对象,查询用户表时会得到结果。

我能想到的唯一真正的区别是,当从浏览器运行时,包含了access_token参数,从浏览器运行时没有返回任何内容。

认证

我正在使用OAuth进行身份验证,如下所示:Mobile Apps - Getting Started 在进行查询时,是否需要在参数列表中包含access_token?

守则:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    facebook = [[Facebook alloc] initWithAppId:@"<myAppId>"];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }

    if (![facebook isSessionValid]) {
        [facebook authorize:nil delegate:self];
    }

    NSArray* permissions =  [[NSArray arrayWithObjects:
                              @"email", @"read_stream", nil] retain];

    [facebook authorize:permissions delegate:self];

    NSString *fql = [NSString stringWithFormat:@"SELECT aid FROM album WHERE owner=me()"];

    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:fql, @"query", @"json", @"format", nil];

    [facebook requestWithMethodName:@"fql.query" andParams:params andHttpMethod:@"GET" andDelegate:self];   

    return YES;
}
- (void)request:(FBRequest *)request didLoad:(id)result {
    if ([result isKindOfClass:[NSArray class]]) {
        result = [result objectAtIndex:0];  }

    NSLog(@"didLoad() received result: %@", result);
}

1 个答案:

答案 0 :(得分:1)

是的,您绝对需要包含access_token字段。在允许您访问该用户的数据之前,我们验证访问令牌是否可以访问user_photos权限。