使用这个 gem https://github.com/sinisterchipmunk/gravatar 我如何检查指定电子邮件的 gravatar 是否存在?我想我错过了一些强制默认选项?因为这
url = Gravatar.new("generic@example.com").image_url
总是返回一张图片
使用这个 gem https://github.com/sinisterchipmunk/gravatar 我如何检查指定电子邮件的 gravatar 是否存在?我想我错过了一些强制默认选项?因为这
url = Gravatar.new("generic@example.com").image_url
总是返回一张图片
如果人们想知道如何在没有任何宝石的情况下做到这一点:
诀窍是使用错误的默认图像获取 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
查看该 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 图像。
if (response.code.to_i == 404)
return false
else
return true
end
而不是整个块,只使用这个(作为最后一行):
response.code.to_i != 404