我正在使用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分享不能得到图像:(
有没有人对这个问题有另一个想法?
答案 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")