无法使用 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】:您应该像这样更新您的 myContent
和 shareDialog
部分:
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
如何使用 node.js 和 javascript 模仿 Facebook 的“链接共享”功能