代码之家  ›  专栏  ›  技术社区  ›  NakakapagpabagabagHm

拉og:image时出现Facebook错误

  •  26
  • NakakapagpabagabagHm  · 技术社区  · 6 年前

    无论出于何种原因,我在FB上分享链接时尝试使用的图像无法加载。给出的确切错误是:

    提供的og:图像,无法下载。出现这种情况的原因有多种,例如服务器使用了不受支持的内容编码。爬虫程序接受deflate和gzip内容编码。

    我使用一个s3存储桶来保存我的图像,就我而言,这个存储桶是公共的,我可以在任何浏览器上加载这些图像。我还将og:image、og:image:url、og:image:secure_url、og:image:height、og:image:width和og:image:type添加到元标记中,因此就元标记而言,我认为我已经涵盖了所有方面。我是否应该添加一个特定的设置?谢谢你的帮助

    4 回复  |  直到 6 年前
        1
  •  53
  •   JeffJenk    4 年前

    对于其他最终来到这里的人,我暂时遇到了这个问题。这个 Facebook Sharing Debugger 异步获取图像,可能会给出错误的404。

    我建议再刮几次以确认。

        2
  •  12
  •   NakakapagpabagabagHm    6 年前

    过了一段时间,我终于解决了这个问题。事实证明,FB Sharer不接受base64图像。我所做的是直接将base64二进制文件保存到S3,因此FB无法显示图像。

    因此,如果有人正在做与我相同的事情,请先将base64图像保存到文件/目录,然后再将其上载到S3。

        3
  •  0
  •   Sarath chandran    4 年前

    首先,我将HTML转换为画布,然后将画布转换为图像,然后使用画布绘制该图像,以便裁剪初始图像以消除额外空间。完成后,图像被发送到服务器进行存储,并在og:image meta标记中传递给FB。

    $scope.facebookShared = () ->
    
          $window.open "//www.facebook.com/sharer/sharer.php?u=" + encodeURI($location.absUrl()), "sharer", "toolbar=0,status=0,width=" + 500 + ",height=" + 500 /// this is window for share fb
    
          height=$('.sharing').height()
          html2canvas document.body,
            onrendered: (canvas) ->
    
              context = canvas.getContext('2d')
              image = new Image()
              image.src = canvas.toDataURL("image/png")
              image.onload = ->
                sharing=$('.sharing')
                canvas.height = Math.round(sharing.width()/1.91)
                canvas.width = sharing.width()
    
                context=canvas.getContext('2d')
    
                pos =  sharing.parent(0).parent(0).position()
                context.drawImage(this, pos.left, pos.top, sharing.width() + 20, sharing.height(),0,0,sharing.width()+20,sharing.height())
    
                $.ajax
                  url: '../../save_img'
                  type: 'post'
                  beforeSend: (xhr) ->
                    xhr.setRequestHeader "X-CSRF-Token", $("meta[name=\"csrf-token\"]").attr("content")
                    return
                  data:
                    base64_image: canvas.toDataURL("image/png").replace(/^data:image\/(png|jpg);base64,/, "")
                    claim_slug: $scope.claim.slug
    
                return false
    
            width: $('.claim-page ').width()
            height: height+115
    
          return
    
        4
  •  0
  •   Nabeel Hussain    2 年前

    在我的例子中,这是由于图像的扩展。 我变了 .PNG .JPEG 它开始工作了。 所以请尝试更改分机,然后再试一次。