iOS:FBSDKShareDialog 打开应用但不允许用户分享链接

Posted

技术标签:

【中文标题】iOS:FBSDKShareDialog 打开应用但不允许用户分享链接【英文标题】:iOS: FBSDKShareDialog Opening App but Not Allowing User to Share Link 【发布时间】:2015-04-09 20:07:15 【问题描述】:

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

我几乎按照 Facebook 开发者网站上的示例到了 T,但作为参考,这是我的代码:

- (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 应用程序但不给用户选项分享任何内容)。任何帮助都将不胜感激!

【问题讨论】:

【参考方案1】:

添加到您的代码

    [shareDialog setDelegate:self]

    <FBSDKSharingDelegate>你的班级

    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 中设置断点,您可以看到许多有趣的底层错误描述。

【讨论】:

【参考方案2】:

此示例用于使用 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框架

【讨论】:

【参考方案3】:

正如FBSDKShareDialogMode.h 中所述:

@discussion 自动模式会逐步检查不同模式的可用性并打开最 可用对话框的适当模式。

所以只需选择另一个Share Dialog Mode。

【讨论】:

虽然这并没有真正解决问题...我尝试了其他模式(FBSDKShareDialogModeShareSheet、FBSDKShareDialogModeNative 等),但它仍然没有拉入我试图设置的内容.充其量我可以获得链接,但不能通过更改共享对话框模式来显示 contentTitlecontentDescription【参考方案4】:

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

【讨论】:

你能告诉我你在 plist 中做了什么 分享后你是否得到了适当的回报,现在我的消息要发给朋友,但是当它回来时,它总是在 sharerDidCancel :(【参考方案5】:

我只在一部 iPhone 上遇到了这个问题,而在其他 iPhone 上它运行良好。事实证明,该设备中的 Facebook 应用程序已过时,因此 FBSDKShareDialog 没有出现。 Facebook 应用更新到最新版本后,FBSDKShareDialog 开始正常工作。

【讨论】:

【参考方案6】:

尝试使用这种模式:

dialog.mode = FBSDKShareDialogModeFeedWeb

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review @VojtechVrbka 这怎么不能提供答案?可能完全错误,but that doesn't mean we should delete it.审稿时请注意。【参考方案7】:

通过原生 ios 应用在 Facebook 上分享。 我们需要在应用中安装更新的 FB SDK。

我使用 Pods 来安装。 将 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(如果未安装)。

【讨论】:

以上是关于iOS:FBSDKShareDialog 打开应用但不允许用户分享链接的主要内容,如果未能解决你的问题,请参考以下文章

iOS Facebook SDK 4 FBSDKShareDialog

iOS 的 FBSDKShareDialog 回调

如何在不使用原生 ios 应用程序中的 FBSDKShareDialog 的情况下在 Facebook 墙上分享照片或链接

FSSDKShareKit - 初始化 iOS 上的 FBSDKShareDialog 崩溃

适用于iOS的Facebook SDK:未显示FBSDKShareDialog

使用 FBSDKShareDialog 发布到 facebook wall 不需要提交审核?