使用這顆寶石 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