How to post location with image on facebook in iOS?

I am trying to share a location with an image on facebook. I successfully exchanged an image, but could not share the location. Below is the image sharing code.

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); } }]; 

Now for sharing which parameter you should add the code above. I am also adding an image to better understand what the overall location will look like. Below is shown how the image with the text will indicate the location on the map. Please suggest me a solution for this. enter image description here

+6
source share
3 answers

Along with the "post", and you will also need a "place" ID to publish as a parameter.

Request "publish_actions" so you can publish the place / location.

Below is the code I used:

 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); }]; 

You can also verify this using the Administrator / Tester accounts listed on the Developer page → your application → Roles. Use Graph explorer for best practice: https://developers.facebook.com/tools/explorer/108895529478793?method=POST&path=me%2Ffeed%3F&version=v2.5&message=Hello%20world&place=110503255682430

The code below can help you find the ID of a place near your location:

 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"); }]; 

OR

 [[[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); }]; 

Hope this helps you.

+2
source

You need to set the place field (which is actually the page id) in the POST request to /me/photos .

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

On iOS, you can use the PlacePicker interface component for the iOS FB SDK for this, as described here: https://developers.facebook.com/docs/ios/ui-controls#placepicker

0
source

Swift 3.2 version @Satish Answer.

 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") } }) } } 

To share Facebook with joining 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 } } 
0
source

Source: https://habr.com/ru/post/971031/


All Articles