无法使用 Facebook 分享 link 内容向 url 添加描述和标题

Can't add description and title to url using Facebook share link content

我尝试为共享 link 内容添加描述和标题。我正在使用 pod 'FacebookShare'(因为当我使用 FBSDKShareKit 时,不推荐使用描述和标题)

https://i.stack.imgur.com/9p9lp.jpg

这是我的 'FacebookShare' 代码:

        do{
            var myContent: LinkShareContent = LinkShareContent(url: NSURL(string:contentUrl!) as! URL )
            myContent.description = "Some description"
            myContent.title = "Hello"

            let shareDialog = ShareDialog(content: myContent)
            shareDialog.mode = .shareSheet
            shareDialog.presentingViewController = self
            shareDialog.failsOnInvalidData = true
            shareDialog.completion = { result in
                // Handle share results
            }
                try shareDialog.show()
            } catch {
                print("Error: \(error)")
         }

但我只能在使用时看到描述和标题: shareDialog.mode = .native 在所有其他情况下(.shareSheet、.Web、.Browser、.FeedWeb、.FeedBrowser)它们不会添加。我不想使用 .native 模式,因为不是每个人都有本地 Facebook 应用程序。 我的情况有解决办法吗?

****更新:****

在网站(我共享 url)上为标题、描述和图像值以及其他变量设置适当的元标记。

允许将 link 附加到帖子的方法现在从专有元标记而不是代码本身检索图像、标题和描述。只需删除这些行即可消除警告并在网站本身上设置适当的标签。

在此处查看确切的弃用更改日志:

https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations

您应该像这样更新 myContentshareDialog 部分:

        let myContent:FBSDKShareLinkContent = FBSDKShareLinkContent()
        myContent.contentTitle = "Hello"
        myContent.contentDescription = "Test message"
        myContent.contentURL = (URL(string: "https://developers.facebook.com"))

        let shareDialog = FBSDKShareDialog()
        shareDialog.mode = .shareSheet
        FBSDKShareDialog.show(from: self, with: myContent, delegate: nil)

您还可以导入并使用 Social 库来创建 Facebook 分享框。并使用 Facebook 共享委托功能控制您的共享结果。像这样:

import FBSDKShareKit
import Social

class YourViewController: UIViewController, FBSDKSharingDelegate {
    func facebookShareButtonClicked() {
        let vc = SLComposeViewController(forServiceType:SLServiceTypeFacebook)
        vc?.add(UIImage(named: "YourImageName"))
        vc?.add(URL(string: "https://developers.facebook.com")) //Your custom URL
        vc?.setInitialText("Your sample share message...")
        self.present(vc!, animated: true, completion: nil)
    }

//Facebook share delegate functions:
    func sharer(_ sharer: FBSDKSharing!, didCompleteWithResults results: [AnyHashable : Any]!) {
        print("Success")
    }

    func sharer(_ sharer: FBSDKSharing!, didFailWithError error: Error!) {
        print("didFailWithError: ", error)
    }

    func sharerDidCancel(_ sharer: FBSDKSharing!) {
        print("Sharer cancelled")
    }
}

注意:请使用您的设备进行尝试。它在模拟器上不起作用。并确保您的设备安装了 Facebook 应用程序。

我遇到了同样的问题 - title、description 和 imageUrl 在最新的 Facebook SDK 版本中被弃用并且只读。我刚刚下载了一个 2017 年 4 月的旧版本,它按预期工作。

var content = LinkShareContent.init(url: URL.init(string: url)!) 

content.quote = "your content here"

请注意最新的更新说明和标题已弃用,因此请使用这个代替那个。别忘了导入 FacebookShare .