2014-07-15 34 views
5

我想使用他们的iOS游戏教程中的代码分享到Facebook。该对话框弹出,我指定的图像和文本存在,但当我点击“发送”加载栏出现,不加载,然后我被重定向到我的应用程序。没有错误被打印到控制台,应用程序不会崩溃。iOS未能发布在Facebook上,没有记录错误

当我在Facebook上以检查消息已经发布,我得到如下:。

“哎呀呀,出事了发布您的状态的问题。我们已经记录的错误,并期待进去。”

我在以前的应用程序中使用过这段代码,它工作得很好。我已经在plist中更新了Facebook ID,Facebook显示名称和URL Scheme。

下面是代码:

FacebookHandler类(从Facebook教程派生)

#import "FacebookHandler.h" 

@implementation FacebookHandler 

+ (void) Facebook_CreateNewSession 
{ 
    // initialize Facebook 
    FBSession* session = [[FBSession alloc] init]; 
    [FBSession setActiveSession: session]; 
} 

+ (void) Facebook_Login 
{ 
    NSArray *permissions = [[NSArray alloc] initWithObjects: 
         @"email", 
         nil]; 

// Attempt to open the session. If the session is not open, show the user the Facebook login UX 
[FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:true completionHandler:^(FBSession *session, FBSessionState status, NSError *error) 
{ 
    // Did something go wrong during login? I.e. did the user cancel? 
    if (status == FBSessionStateClosedLoginFailed || status == FBSessionStateCreatedOpening) { 

     // If so, just send them round the loop again 
     [[FBSession activeSession] closeAndClearTokenInformation]; 
     [FBSession setActiveSession:nil]; 
     [self Facebook_CreateNewSession]; 
    } 
    else 
    { 
    }     
}]; 
} 

+ (void) Facebook_PostToNewsFeedWithTitle:(NSString*)title withCaption:(NSString*)caption withDescription:(NSString*)description withLink:(NSString*)link withPictureURL:(NSString*)picURL 
{ 

// check if user is logged in 
if ([FBSession activeSession] == nil) 
{ 
    [FacebookHandler Facebook_CreateNewSession]; 
    [FacebookHandler Facebook_Login]; 
} 


// This function will invoke the Feed Dialog to post to a user's Timeline and News Feed 
// It will attemnt to use the Facebook Native Share dialog 
// If that's not supported we'll fall back to the web based dialog. 

NSString *linkURL = link; 
NSString *pictureURL = picURL; 

// Prepare the native share dialog parameters 
FBShareDialogParams *shareParams = [[FBShareDialogParams alloc] init]; 
shareParams.link = [NSURL URLWithString:linkURL]; 
shareParams.name = title; 
shareParams.caption= caption; 
shareParams.picture= [NSURL URLWithString:pictureURL]; 
shareParams.description = description; 

if ([FBDialogs canPresentShareDialogWithParams:shareParams]){ 

    [FBDialogs presentShareDialogWithParams:shareParams 
           clientState:nil 
            handler:^(FBAppCall *call, NSDictionary *results, NSError *error) { 
             if(error) { 
              NSLog(@"Error publishing story."); 
             } else if (results[@"completionGesture"] && [results[@"completionGesture"] isEqualToString:@"cancel"]) { 
              NSLog(@"User canceled story publishing."); 
             } else { 
              NSLog(@"Story published."); 
             } 
            }]; 

}else { 

    // Prepare the web dialog parameters 
    NSDictionary *params = @{ 
          @"name" : shareParams.name, 
          @"caption" : shareParams.caption, 
          @"description" : shareParams.description, 
          @"picture" : pictureURL, 
          @"link" : linkURL 
          }; 

    // Invoke the dialog 
    [FBWebDialogs presentFeedDialogModallyWithSession:nil 
              parameters:params 
               handler: 
    ^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 
     if (error) { 
      NSLog(@"Error publishing story."); 
     } else { 
      if (result == FBWebDialogResultDialogNotCompleted) { 
       NSLog(@"User canceled story publishing."); 
      } else { 
       NSLog(@"Story published."); 
      } 
     }}]; 
} 
} 
@end 

我的呼叫

[FacebookHandler Facebook_PostToNewsFeedWithTitle:title withCaption:caption withDescription:description withLink:link withPictureURL:picURL]; 

UPDATE

这似乎是Facebook应用程序的问题。在卸载Facebook的设备上试用时,系统会要求我登录并成功发布。但是,如果安装了Facebook,它不会发布。

+0

我也面临这个问题,而它在模拟器中正常工作。 –

+0

目前为止的解决方案?我也有同样的问题。 –

回答

0

我通过手动修复在plist文件中输入“URL types”键。 不要复制粘贴从另一个plist文件的plist值 - 这是苹果的错误!

相关问题