Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook SDK 3.1 presentShareDialogModally fails

I'm trying to test out the new built-in share "sheet" for Facebook on iOS 6 but when I run the sample code it doesn't show the sheet. Instead it posts a status for me without showing what it's going to post first. Also I thought Facebook didn't allow you to put words in the user's mouth anymore? The console prints this error: HelloFacebookSample Error: HTTP status code: 400

I have XCode 4.5 and iOS simulator 6.0 and Facebook SDK 3.1

I'm following this: http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/

like image 241
Curtis Avatar asked Sep 26 '12 00:09

Curtis


3 Answers

Did you set up the Facebook account on the device/simulator (under Settings->Facebook)?

The native sheet dialogs are only presented when the app is running on ios 6 AND the user is authenticated through the ios 6 Facebook account. Otherwise, the handler does report that error and the presentShareDialogModallyFrom returns "NO". Also, the FBNativeDialogResult result in the handler will equal FBNativeDialogResultError.

like image 106
Chris Pan Avatar answered Oct 19 '22 13:10

Chris Pan


You are missing some of the required frameworks:

AdSupport.framework

Account.framework

Social.framework

BOOL displayedNativeDialog =
[FBNativeDialogs
 presentShareDialogModallyFrom:self
 initialText:self.shareText
 image:nil
 url:nil
 handler:^(FBNativeDialogResult result, NSError *error) {
     if (error) {
         /* handle failure */
         NSLog(@"error:%@, %@", error, [error localizedDescription]);
     } else {
         if (result == FBNativeDialogResultSucceeded) {
             /* handle success */
             NSLog(@"handle success");
         } else {
             /* handle user cancel */
             NSLog(@"user cancel");
         }
     }
 }];
if (!displayedNativeDialog) {
    /* handle fallback to native dialog  */
}
like image 34
docchang Avatar answered Oct 19 '22 12:10

docchang


Make sure you're not opening sessions using deprecated methods (ie.openActiveSessionWithPermissions instead of the newer openActiveSessionWithReadPermissions/openActiveSessionWithWritePermissions) or the facebook sdk won't use native facebook integration (ie. native dialogs)

like image 42
Nico Tranquilli Avatar answered Oct 19 '22 13:10

Nico Tranquilli