无法使用 Facebook 共享链接内容向 url 添加描述和标题

Posted

技术标签:

【中文标题】无法使用 Facebook 共享链接内容向 url 添加描述和标题【英文标题】:Can't add description and title to url using Facebook share link content 【发布时间】:2017-05-08 11:06:11 【问题描述】:

我尝试为共享链接内容添加描述和标题。我正在使用 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)。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

您应该像这样更新您的 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 应用程序。

【讨论】:

我尝试使用社交库。它也没有帮助我。共享工作正常,但未添加初始文本。我正在使用设备。 Xcode 8.2.1,斯威夫特 3.0。可能我必须使用 .native 模式。 我已经更新了我的答案。我用你的方法试过了。你能用我最喜欢的代码再试一次吗? 我试过了。 Graph API 2.9 已弃用方法 myContent.contentTitle、myContent.contentDescription。所以我认为这些方法都没有使用。而 facebook 从 url 的元描述中获取这些字段。 是的,你是对的。在 FBSDKShareKit v.4.22.0 之后,这些字段已被弃用。您应该删除这些行以消除警告并在网站(这是您的共享网址)本身上为标题、描述和图像值以及其他变量设置适当的元标记。【参考方案4】:
var content = LinkShareContent.init(url: URL.init(string: url)!) 

content.quote = "your content here"

不推荐使用最新更新说明和标题中的注释,因此请使用 this 而不是 .别忘了导入 FacebookShare。

【讨论】:

以上是关于无法使用 Facebook 共享链接内容向 url 添加描述和标题的主要内容,如果未能解决你的问题,请参考以下文章

假设我无法通过图形 api 获取全局用户 ID,如何使用应用程序打开 facebook url

Facebook Messenger 链接共享不适用于消息

没有链接的 Facebook 共享对话框

如何使用 node.js 和 javascript 模仿 Facebook 的“链接共享”功能

在 LinkedIn 上共享可在 Facebook 上共享的 URL

无法使用开放图形元标记从我的 React next.js 网站共享 Facebook/Twitter 内容