iOS无法在Facebook上发布,未记录任何错误

Kir*_*Koa 5 facebook facebook-sharer ios

我正在尝试使用iOS游戏教程中的代码与Facebook分享.弹出对话框并显示我指定的图像和文本,但是当我点击"发送"时出现加载栏,没有加载,然后我被重定向到我的应用程序.没有错误打印到控制台,应用程序不会崩溃.

当我在Facebook上查看邮件是否已发布时,我得到以下信息:

"哎呀,有些东西错了.发布你的状态时出现了问题.我们已经记录了错误,并会调查它."

我在之前的应用程序中使用了这个代码,它工作得很好.我已经更新了plist中的Facebook ID,Facebook显示名称和URL方案.

这是代码:

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
Run Code Online (Sandbox Code Playgroud)

我的电话

    [FacebookHandler Facebook_PostToNewsFeedWithTitle:title withCaption:caption withDescription:description withLink:link withPictureURL:picURL];
Run Code Online (Sandbox Code Playgroud)

UPDATE

这似乎是Facebook应用程序的问题.在卸载Facebook的设备上尝试时,我被要求登录,然后成功发布.但是,如果安装了Facebook,则不会发布.

evy*_*vya 0

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