iOS: FBSDKShareDialog 打开应用程序但不允许用户共享 Link

iOS: FBSDKShareDialog Opening App but Not Allowing User to Share Link

我正在尝试将新的 Facebook SDK 集成到我正在开发的应用程序中,但出于某种原因,每当我尝试共享 link 时,共享屏幕都不会出现。我被踢到 Facebook 应用程序(如果没有安装 Facebook 应用程序,则被踢到网络应用程序),但我从来没有选择分享 link 我试图让用户 post.

我几乎完全按照 Facebook 开发者网站上的示例进行了操作,但为了参考,这里是我的代码:

- (IBAction)shareToFacebook:(id)sender {
    NSLog(@"Share to Facebook");
    FBSDKShareLinkContent *content = [FBSDKShareLinkContent new];
    content.contentURL = [NSURL URLWithString:@"http://google.com"];
    content.contentTitle = @"Test Post!";
    content.contentDescription = @"Content Description;
    FBSDKShareDialog *shareDialog = [FBSDKShareDialog new];
    [shareDialog setMode:FBSDKShareDialogModeAutomatic];
    [shareDialog setShareContent:content];
    [shareDialog setFromViewController:self];
    [shareDialog show];
//    [FBSDKShareDialog showFromViewController:self withContent:content delegate:nil];
}

正如您在上面看到的,我已经尝试使用 Facebook 在他们的文档中使用的便捷方法,以及更冗长的方法,但两者都产生相同的结果(打开 Facebook 应用程序但不给用户一个共享任何内容的选项)。任何帮助都将不胜感激!

FBSDKShareDialogMode.h 中所述:

@discussion The automatic mode will progressively check the availability of different modes and open the most appropriate mode for the dialog that is available.

所以选择另一个Share Dialog Mode

这实际上是我 info.plist 应用程序中的一个小错字。请提醒其他任何遇到类似错误的人,检查他们在那里设置的所有信息并确保它们都是正确的。

给你加码

  1. [shareDialog setDelegate:self]

  2. <FBSDKSharingDelegate> 到你的 class

  3. FBSDKSharing代码

    #pragma mark - FBSDKSharingDelegate
    - (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults :(NSDictionary *)results {
       NSLog(@"FB: SHARE RESULTS=%@\n",[results debugDescription]);
    }
    
     - (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error {
       NSLog(@"FB: ERROR=%@\n",[error debugDescription]);
    }
    
    - (void)sharerDidCancel:(id<FBSDKSharing>)sharer {
       NSLog(@"FB: CANCELED SHARER=%@\n",[sharer debugDescription]);
    }
    

didFailWithError 中设置断点,您可以看到许多有趣的底层错误描述。

我只在一个 iPhone 上遇到过这个问题,而在其他 iPhone 上它工作正常。事实证明,该设备中的 Facebook 应用程序已过时,因此 FBSDKShareDialog 未显示。将 Facebook 应用程序更新到最新版本后,FBSDKShareDialog 开始正常工作。

尝试使用此模式:

dialog.mode = FBSDKShareDialogModeFeedWeb

此示例用于使用 swift

从应用程序将图像分享到 Facebook
     func shareWithFacebook(){

            let share : FBSDKShareLinkContent = FBSDKShareLinkContent()

            share.imageURL = NSURL(string: "image url")
            share.contentTitle = "content description "
            share.contentURL = NSURL(string: "https://www.example.com")

            let dialog : FBSDKShareDialog = FBSDKShareDialog()
            dialog.fromViewController = self
            dialog.shareContent = share
            let facebookURL = NSURL(string: "fbauth2://app")
            if(UIApplication.sharedApplication().canOpenURL(facebookURL!)){
                dialog.mode = FBSDKShareDialogMode.Native
            }else{
                dialog.mode = FBSDKShareDialogMode.FeedWeb
            }
            dialog.show()
}

别忘了添加facebook框架

通过本机 iOS 应用程序在 Facebook 上分享。 我们需要在应用程序中安装更新的 FB SDK。

我是用Pods安装的。 link 将 Pod 设置为 Mac:https://cocoapods.org

在 podfile 中写入 pod 文件名:

pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'


手动安装请遵循:https://developers.facebook.com/docs/sharing/ios

成功安装 FB SDK 后。

在按钮操作上编写代码:

        FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
        content.contentURL = [NSURL URLWithString:@"https://AppLink"];
        content.quote = @"Sample description of app";

        [FBSDKShareDialog showFromViewController:self
                                     withContent:content
                                        delegate:nil];

它将自动处理 Native 或 Web(如果未安装。)