Facebook如何从Google App Engine共享图像base64

时间:2013-07-02 02:55:41

标签: python facebook google-app-engine share

我正在使用Google App Engine项目,我希望像这样使用facebook分享 http://i.stack.imgur.com/uz52n.png 我已经读过了 How does Facebook Sharer select Images and other metadata when sharing my URL?
但GAE无法上传物理图像,所有图像存储在数据库中的blob属性作为base64所以facebook分享不能得到图像:( 有没有人对这个问题有另一个想法?

1 个答案:

答案 0 :(得分:0)

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

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

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

首先,在您的图像分辨率的django网址列表中添加网址:

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

然后在你的视图中,从网址获取密钥,检索你的对象,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")