【问题标题】:iOS: FBSDKShareDialog Opening App but Not Allowing User to Share LinkiOS:FBSDKShareDialog 打开应用但不允许用户分享链接
【发布时间】: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 应用程序但不给用户选项分享任何内容)。任何帮助都将不胜感激!

【问题讨论】:

    标签: ios objective-c facebook facebook-ios-sdk


    【解决方案1】:

    添加到您的代码

    1. [shareDialog setDelegate:self]

    2. <FBSDKSharingDelegate>你的班级

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

    【讨论】:

      【解决方案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
          

          【讨论】:

          【解决方案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(如果未安装)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-02
            • 1970-01-01
            • 1970-01-01
            • 2016-08-20
            • 1970-01-01
            相关资源
            最近更新 更多