使用这颗宝石 https://github.com/sinisterchipmunk/gravatar 我该如何检查指定邮件的gravatar是否存在?我想我缺少一些强制默认选项?因为这个我应该如何检查gravatar是否存在?
url = Gravatar.new("[email protected]").image_url
总是返回图片
使用这颗宝石 https://github.com/sinisterchipmunk/gravatar 我该如何检查指定邮件的gravatar是否存在?我想我缺少一些强制默认选项?因为这个我应该如何检查gravatar是否存在?
url = Gravatar.new("[email protected]").image_url
总是返回图片
望着那宝石的文档,这听起来像你需要一个API密钥,然后才能运行存在的方法:
很好,但如何在en.gravatar.com/site/implement/xmlrpc上公布的API的其余部分?嗯,你需要或者用户的Gravatar密码,或他们的API密钥:
API = Gravatar.new( “[email protected]”:API_KEY => “AbCdEfG1234”)
api.exists ?(“[email protected]”)#=> true或false,取决于指定的电子邮件是否存在。
如果用户没有gravatar,将根据电子邮件为他们生成一个图像(至少这是我的经验)。我使用了gem gravatar_image_tag - http://rubygems.org/gems/gravatar_image_tag,它允许您更改默认的gravatar图像。
这也许是另一种尝试的方法:http://stackoverflow.com/questions/2103620/gravatar-how-do-i-know-if-a-user-has- a-real-picture?rq = 1 – someoneinomaha 2012-07-20 21:54:59
好吧,我只是没有抓住政治宝石vs gravatar。正如在gravatar文档中所写的,你可以很容易地将d =参数传递给图像请求:404:如果没有任何图像,则不加载任何图像是与电子邮件散列相关联,而是返回一个HTTP 404(文件未找到)响应。我在寻找在提到的宝石 – 2012-07-21 16:06:02
如果人们想知道如何做到这一点没有任何宝石:
关键是要获得的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
但是,如果电子邮件不存在,它不会回复404,但与默认gravatar ,所以你怎么能返回false? – 2013-10-13 22:51:54
好吧,它可以在我最初没有放过的'?d = 404'上工作! – 2013-10-13 22:55:51
是的,如果没有gravatar,那么你会得到一个错误,因为你提供虚假的默认图片。 – 2014-02-17 16:43:26
if (response.code.to_i == 404)
return false
else
return true
end
而是整块的,只能使用这个(作为最后一行):
response.code.to_i != 404
你试过比'通用@ example.com'其他无效的电子邮件地址? – 2012-07-20 16:39:03
是啊,我试过了,结果相同:-( – 2012-07-21 15:51:53