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

时间:2015-04-09 20:07:16

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

我正在尝试将新的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应用程序但不向用户提供选项)分享任何内容)。任何帮助都将非常感谢!

7 个答案:

答案 0 :(得分:2)

添加到您的代码

  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]);
    }
    
  4. didFailWithError中设置断点,您可以看到许多有趣的潜在错误描述。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

正如FBSDKShareDialogMode.h中所述:

  

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

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

答案 3 :(得分:0)

它实际上是我的info.plist中的一个小错字。只是向其他人发现类似错误,检查他们在那里设置的所有信息,并确保它们都正确无误。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

尝试使用此模式:

$(".btn-test-1").click(function(){
        var id_val = $(this).attr('id');
        //with the use of ajax
        $.ajax({  
            type: "POST",  
            url: "somefile.php",  
            data: {id:id_val },      
            success: function(result){  
              $("#outputarea").load("somefile.php");
            } 
        })
    });

答案 6 :(得分:0)

通过Native 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(如果没有安装。)