python - 如何为 Facebook 开放图标记正确编码带有等号的图像 URL

标签 python google-app-engine facebook

我有一个带有 Open Graph 图像标签的页面:

<meta property="og:image" content="http://childhumor2.homeip.net:9009/_ah/img/RYCF7Ty7wODp9R-N_QIWYA===s200"/>

图像是一个 GAE blob,URL 来自调用 get_serving_url。该 URL 正常工作。

现在,如果有人喜欢这个页面,新闻源中显示的缩略图就会损坏。只有一个空白的 1x1 图像返回给浏览器。

检查 FB 页面,生成的 HTML 是:

<img src="http://external.ak.fbcdn.net/safe_image.php?d=6b635a7f80252e93c6b28e2dbe4ad440&amp;w=90&amp;h=90&amp;url=http%3A%2F%2Fchildhumor2.homeip.net%3A9009%2F_ah%2Fimg%2FRYCF7Ty7wODp9R-N_QIWYA%3D%3D%3Ds200" class="img">

第一次查看点赞用户的动态消息时,我看到 FB 访问了我的图片服务器:

INFO     2010-11-14 21:33:17,701 dev_appserver.py:3283] "GET /_ah/img/RYCF7Ty7wODp9R-N_QIWYA%3D%3D%3Ds200 HTTP/1.1" 500 -

很明显,URL 中的等号存在 URL 编码问题,但我不知道这是谁的错。

  • FB 是否应该在回调到我的服务器获取图像之前取消转义 %3D?
  • GAE 是否没有正确处理编码的 URL?
  • 我是否应该以某种方式对 Open Graph 标记中的 URL 进行编码? (我尝试使用 urllib.quote-ing 得到相同的结果。)

为了让事情更困惑,Facebook URL Linter正确检索图像。此外,如果在页面上进行 FB 分享,缩略图预览将正确显示。这让我相信这是 safe_image.php 脚本 FB 代理/缓存图像的错误。

最佳答案

Facebook 可能应该取消引用该值,以便它与您列出的原始 og:image 相匹配,您应该为此编写一个错误(如 Nathan 所建议的)。

但是,从技术上讲,%3D= 在 URL 的路径部分中具有相同的含义,应该同等对待,因此在GAE方面的事情。在这种情况下,您可能希望在 GAE 上处理时 urllib.unquote() 路径。 (也许你可以简单地重定向到未转义的版本)

关于python - 如何为 Facebook 开放图标记正确编码带有等号的图像 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179906/

相关文章:

python - 如何解析粘在一起的两个元素?

Facebook Canvas 身份验证 : No signed_request parameter after redirect

python - 奇怪的额外循环

python - Python 的 Twisted Reactor 是如何工作的?

java - 无需身份验证的 GAE + GWT Servlet

python - 在 GAE 中的 Python 中,限制执行不受信任代码的风险的最佳方法是什么?

Facebook FB.login 不会询问用户电子邮件权限?

javascript - 将其他字段保存在通过 facebook 登录的解析用户中

centOS 上的 Python netadd 模块

python - App Engine "InvalidURLError: Invalid request URL"尽管 URL 在浏览器中运行正常