8

使用这个 gem https://github.com/sinisterchipmunk/gravatar 我如何检查指定电子邮件的 gravatar 是否存在?我想我错过了一些强制默认选项?因为这

url = Gravatar.new("generic@example.com").image_url

总是返回一张图片

4

3 回答 3

42

如果人们想知道如何在没有任何宝石的情况下做到这一点:

诀窍是使用错误的默认图像获取 gravatar 图像,然后检查标题响应。它是通过 Net::HTTP ruby​​ 库实现的。

require 'net/http'

def gravatar?(user)
    gravatar_check = "http://gravatar.com/avatar/#{Digest::MD5.hexdigest(user.gravatar_email.downcase)}.png?d=404"
    uri = URI.parse(gravatar_check)
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Get.new(uri.request_uri)
    response = http.request(request)
    response.code.to_i != 404 # from d=404 parameter
end
于 2013-06-22T11:45:07.127 回答
8

查看该 gem 的文档,听起来您需要一个 API 密钥才能运行 exists 方法:

很好,但是在 en.gravatar.com/site/implement/xmlrpc 上宣传的 API 的其余部分怎么样?好吧,为此您需要用户的 Gravatar 密码或他们的 API 密钥:

api = Gravatar.new("generic@example.com", :api_key => "AbCdEfG1234")

api.exists?("another@example.com") #=> true or false,取决于指定的邮箱是否存在。

如果用户没有 gravatar,则会根据电子邮件为他们生成图像(至少这是我的经验)。我使用了 gem gravatar_image_tag - http://rubygems.org/gems/gravatar_image_tag,它可以让你更改默认的 gravatar 图像。

于 2012-07-20T16:47:36.307 回答
1
if (response.code.to_i == 404)
  return false
else
  return true
end

而不是整个块,只使用这个(作为最后一行):

response.code.to_i != 404
于 2014-01-08T09:18:51.230 回答