使用Node.js检查Gravatar是否存在

3

你好,现在我有一个使用Sails.JS的小型Web应用程序,并且我正在尝试设置默认图像,如果用户没有gravatar账户/资料。

这是我在控制器中使用的代码来对电子邮件进行哈希处理:

var crypto = require('crypto');
req.session.email = 'user_email@gmail.com';
req.session.gravatar_hash = crypto.createHash('md5').update(req.session.email).digest('hex');

你看,我现在有哈希值的会话。

所以在我的视图中,我有:

<div class="gravatar" style="background-image: url('http://www.gravatar.com/avatar/<%=req.session.gravatar_hash%>?s=50');"></div>

这段代码很好地展示了gravatar(默认或自定义)图像,但是如果我想进行验证以便在用户没有gravatar时使用自定义图像怎么办?是否有一种验证方法?

2个回答

13

Gravatar提供了一个方便的功能--如果用户没有Gravatar,它允许您指定默认的图像URL来显示。根据他们的文档:

如果你想使用自己的默认图像(可能是你的标志、一个有趣的表情等),那么你可以通过在d=或default=参数中提供图像的URL来轻松实现。该URL应该被URL编码以确保正确传输,例如:

<img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=http%3A%2F%2Fexample.com%2Fimages%2Favatar.jpg"/>

查看文档以获取更多选项和信息。


10

您可以检查 (HEAD) 请求到 'http://gravatar.com/avatar/' + req.session.gravatar_hash + '.png?d=404' 是否返回了 404。


我认为Gravatar不支持HEAD请求。对我来说,这只是超时了:curl --head 'http://www.gravatar.com/avatar/e6ebbd9993d6b33b5fa08f809ed81b3c?d=404' - Jun-Dai Bates-Kobashigawa
@Jun-DaiBates-Kobashigawa 你在哈希值后面漏掉了.png。这个链接对我来说还是有效的。 - mscdex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接