通过iOS Graph API将照片上传到自己的墙上,并显示用户的位置

时间:2012-07-14 10:52:22

标签: ios facebook-graph-api photo-upload

我需要在用户的Facebook墙上发布一张带有用户位置的照片(从相机中拍摄)。 现在,facebook照片对象有一个名为place的字段:

object containing id and name of Page associated with this location, and a location field containing geographic information such as latitude, longitude, country, and other fields (fields will vary based on geography and availability of information)

现在我如何获取该地点,将其与照片一起附加并将其上传到用户墙中。 这是我的照片上传代码:

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       resultImage, @"picture",
                                       location, @"place",
                                       nil];

        [appDelegate.facebook requestWithGraphPath:@"me/photos"
                                         andParams:params
                                     andHttpMethod:@"POST"
                                       andDelegate:self];

但是,我如何获取位置参数?有人可以帮忙吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

根据this documentation,地点对象只能是所需位置的Facebook页面ID。所以,这是我在上传照片时设法获取用户位置的方法。

-(void)fbCheckForPlace:(CLLocation *)location
{
    NSString *centerLocation = [[NSString alloc] initWithFormat:@"%f,%f",
                                location.coordinate.latitude,
                                location.coordinate.longitude];
    NSLog(@"center location is : %@",centerLocation);
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                    @"place",  @"type",
                                    centerLocation, @"center",
                                    @"1000",  @"distance",
                                    nil];
    [centerLocation release];
    [appDelegate.facebook requestWithGraphPath:@"search" andParams:params andDelegate:self];
}

通过调用CLLocation Manager委托获取当前位置并传入上述方法。

接下来,如果此请求成功,则将place对象插入可变数组中。

NSArray *resultData = [result objectForKey:@"data"];
        for (NSUInteger i=0; i<[resultData count] && i < 5; i++) 
        {
            [self.listOfPlaces addObject:[resultData objectAtIndex:i]];
        }

然后触发了照片上传方法:

- (void)uploadPhotoWithLocation
{
    NSString *placeId = [[self.listOfPlaces objectAtIndex:0] objectForKey:@"id"];

    params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   self.resultImage, @"picture",
                                   placeId, @"place",
                                   nil];

    [appDelegate.facebook requestWithGraphPath:@"me/photos"
                                     andParams:params
                                 andHttpMethod:@"POST"
                                   andDelegate:self];
}

我已经在附近第一个可用的签到位置([self.listOfPlaces objectAtIndex:0]),现在应用程序可以成功发布用户当前附近位置的照片。

答案 1 :(得分:0)

FB API显示: '地点': '包含与此位置相关联的页面的ID和名称的对象,以及包含纬度,经度,国家和其他字段等地理信息的位置字段(字段将根据地理位置和信息的可用性而变化)'

1)在iOS中启动位置服务 2)得到当前位置:纬度,经度

使用两个数据纬度,经度

答案 2 :(得分:0)

Shabib的上述答案很棒(我没有足够的代表直接评论),但你现在还需要指定&#34;字段&#34;参数,以便图形请求/搜索成功完成。我的参数字典看起来像这样:

NSDictionary *params = @{@"type" : @"place",
                        @"center" : centerLocation,
                        @"distance" : @"500",
                        @"fields" : @"id,name"};