使用FBShareDialog或SLComposeViewController从ios共享Web链接,而不是从Web链接获取图像

时间:2017-07-21 16:40:03

标签: ios facebook facebook-graph-api

我正在使用FBShareDialog共享Web链接,并且还共享SLComposeViewController,并且web链接仅托管在我的服务器上,并且在该网页上所有facebook元标记都正确设置如下:

<meta property="fb:app_id" content="MY_APP_ID">
    <meta property="og:url" content="[http://example.com/share/?ODk0][1]">
    <meta property="og:type" content="article">
    <meta property="og:title" content="I Created This With App - The Office">
    <meta property="og:description" content="NOOOO!">
    <meta property="og:image" content="http://example.com/upload/large/5971ed74a0e52.png">
    <meta property="og:image:width" content="800">
    <meta property="og:image:height" content="420">
    <meta property="og:site_name" content="My App Name">

当我分享以下链接时 http://example.com/share/?ODk0

直接从Facebook然后它获取og:image元标记中提到的图像和所有工作.. 当我尝试测试到https://developers.facebook.com/tools/debug/sharing/的链接时,它也表明一切都是正确的。

但是当我使用以下代码从我的应用程序分享此链接时:

let content = FBSDKShareLinkContent.init()
            content.contentURL = URL.init(string: "http://example.com/share/?ODk0")
            let dialog = FBSDKShareDialog.init()
            dialog.fromViewController = parentViewController
            dialog.shareContent = content
            dialog.mode = .shareSheet
            dialog.show()

然后它将打开共享对话框然后它获取og:图像并显示在共享对话框上,然后我在Facebook上发布POST。然后我去facebook,它没有显示图像。这是我过去两周以来面临的问题。我升级了Facebook sdk,并检查了所有升级但没有运气。

有没有人可以帮我解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:0)

        let shareURL = String.init(format: "%@f-%@", SHAREURL, base64!)
        let content = FBSDKShareLinkContent()
        content.contentURL = NSURL(string: shareURL)! as URL
        print("facebook content url :\(content.contentURL)")
        let dialog = FBSDKShareDialog()
        dialog.fromViewController = self
        dialog.shareContent = content
        dialog.delegate = self
        dialog.mode = .feedWeb
        if dialog.canShow() {
            dialog.show()
        }

使用上面的代码它终于为我工作了。