0

我正在使用 Google App Engine 项目,我想像这样使用 facebook 共享。
http://i.stack.imgur.com/uz52n.png
我已经读过这篇 文章 Facebook Sharer 如何在分享我的 URL 时选择图片和其他元数据?
但GAE无法上传物理图像,所有图像存储在数据库中的blob属性中作为base64所以facebook分享无法获取图像:(有人对这个问题有其他想法吗??

4

1 回答 1

0

Facebook 读取 og:image 元数据以从您的网页中解析图像。og:image 不允许数据 URI 图像(base64 编码)。

您必须在 og:image 中提供图像 url,但使用该 url,您可以制定一种解决方法来模拟直接图像分辨率的行为并从您的 appengine 数据库中获取图像。

这是一个使用 Django 的 python 解决方案,但这个概念适用于一切。图像的名称在这里是“key.png”,其中 key 是包含 base64 存储图像的对象的键。

首先,为您的图像分辨率添加一个 url 到 django url 列表中:

(r'^image/(?P<key>[^\.^/]+)\.png$', 'yourapp.views.image'),

然后在您的视图中,从 url 获取密钥,检索您的对象,base64 解码并使用正确的 mimetype 将其发送回:

import base64

def image(request, key):
    # get your object from database
    f = YourImageObject.get(key)

    # f.pic is the base64 encoded image
    pic = f.pic[len("data:image/png;base64,"):]    # remove the header

    # base64 decode and respond with correct mimetype
    return HttpResponse(base64.b64decode(pic), mimetype="image/png")
于 2013-07-30T14:32:34.137 回答