如何张贴iOS的图像到Facebook的位置?

我正试图与Facebook分享位置。 我已成功共享图片,但无法共享位置。 下面是我的共享图像的代码。

UIImage *facebookImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",imagesURL,str]]]]; NSMutableDictionary* params = [[NSMutableDictionary alloc] init]; [params setObject:@"New Happening created on the HappenShare mobile app." forKey:@"message"]; [params setObject:facebookImage forKey:@"picture"]; [FBRequestConnection startWithGraphPath:@"me/photos" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection,id result,NSError *error) { if (error) { NSLog(@"error : %@",error); } else { NSLog(@"Result : %@",result); } }]; 

现在分享位置我应该在上面的代码中添加什么参数。 我附加一个图像也更好地了解如何共享位置将看起来像。低于图像显示如何带有文本的图像将指示到地图的位置。 请给我一个解决scheme。 在这里输入图像说明

随着“消息”,你也需要“放置”ID作为参数。

请求“publish_actions”,以便您可以发布地点/位置。

以下是我使用的代码:

 NSMutableDictionary *params = [NSMutableDictionary dictionary]; [params setObject:@"Hello World" forKey:@"message"]; [params setObject:@"110503255682430"/*sample place id*/ forKey:@"place"]; [[[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/feed" parameters:params HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { NSLog(@"result %@",result); NSLog(@"error %@",error); }]; 

您还可以使用“开发者”页面中的“pipe理员/testing人员”帐户 – >您的应用程序 – >angular色来检查。 使用图表浏览器更好的做法: https : //developers.facebook.com/tools/explorer/108895529478793?method=POST&path= me%2Ffeed%3F &version=v2.5&message=Hello%20world&place=110503255682430

下面的代码可能会帮助您获得您所在位置附近的地点ID:

 NSMutableDictionary *params2 = [NSMutableDictionary dictionaryWithCapacity:4L]; [params2 setObject:[NSString stringWithFormat:@"%@,%@",YourLocation latitude,YourLocation longitude] forKey:@"center"]; //Hard code coordinates for test [params2 setObject:@"place" forKey:@"type"]; [params2 setObject:@"100"/*meters*/ forKey:@"distance"]; [[[FBSDKGraphRequest alloc] initWithGraphPath:@"/search" parameters:params2 HTTPMethod:@"GET"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { NSLog(@"RESPONSE!!! /search"); }]; 

要么

 [[[FBSDKGraphRequest alloc] initWithGraphPath:@"/search?type=place&center=YourLocationLat,YourLocationLong&distance=500" parameters:nil HTTPMethod:@"GET"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { NSLog(@"result %@",result); }]; 

希望它可以帮助你..

您需要在/me/photos上的POST请求中设置place (实际上是一个页面ID)字段。

请参阅https://developers.facebook.com/docs/graph-api/reference/v2.0/user/photos/#publish

在iOS上,您可以使用FB iOS SDK的PlacePicker UI组件,如下所述: https : //developers.facebook.com/docs/ios/ui-controls#placepicker

Swift 3.2版的@Satish答案。

 func getPlaceId() { let locManager = CLLocationManager() locManager.requestWhenInUseAuthorization() var currentLocation = CLLocation() if( CLLocationManager.authorizationStatus() == .authorizedWhenInUse || CLLocationManager.authorizationStatus() == .authorizedAlways) { currentLocation = locManager.location! let param = ["center":"\(currentLocation.coordinate.latitude),\(currentLocation.coordinate.longitude)","type":"place","distance":"100"] FBSDKGraphRequest(graphPath: "/search", parameters: param).start(completionHandler: { (connection, result, error) -> Void in if (error == nil) { guard let data = result as? NSDictionary else { return } guard let arrPlaceIDs = data.value(forKey: "data") as? [NSDictionary] else { return } guard let firstPlace = arrPlaceIDs.first else { return } //First facebook place id. print(firstPlace.value(forKey: "id") as! String) } else { print(error?.localizedDescription ?? "error") } }) } } 

对于Facebook与附加placeId共享

  let photo = Photo(image: img, userGenerated: true) var content = PhotoShareContent() content.photos = [photo] content.placeId = id //Facebook placeId let sharer = GraphSharer(content: content) sharer.failsOnInvalidData = true do { try sharer.share() } catch { print("errorrrr") } sharer.completion = { FBresult in switch FBresult { case .failed(let error): print(error) break case .success(_): //code break default: break } }