ki: https://www.yourbackend.com?authenticate?token=asdad7687h ... Firebase tarafından oluşturulan bir jeton bir JWT belirteç olduğunu Not olduğunu, öncelikle onun doğruluğu gerek ve arka uçta deşifre edin. Bunun için gemfile gem 'jwt', '1.5.6' gem 'rest-client', '2.0.1' bu iki değerli taşları eklemeniz gerekir. kumandanızda olarak) fonksiyonu: kullanıcı geçerli belirteci varsa
def get_set_user
begin
token = params[:token]
if token.nil?
@user = nil
return
end
firebase_id = verify_user(token)[0]["user_id"]
if User.where(:firebase_id => firebase_id).exists?
@user = User.where(:firebase_id => firebase_id).first
else
@user = User.new(:firebase_id => firebase_id)
@user.save
@user
end
rescue
@user = nil
end
end
def verify_user(token)
certificate_url = "https://www.googleapis.com/robot/v1/metadata/x509/[email protected]"
myresponse = RestClient.get(certificate_url).body
certificates = JSON.parse myresponse.gsub('=>', ':')
myjson =""
certificates.each do|key , value|
begin
x509 = OpenSSL::X509::Certificate.new(value)
iss = 'https://securetoken.google.com/<yourdomain>'
aud = 'yourdomain' # change this
myjson = JWT.decode(token, x509.public_key, true,
{ algorithm: "RS256", verify_iat: true ,
iss: iss , verify_iss: true ,
aud: aud , verify_aud: true
})
return myjson
rescue
end
end
return nil
end
Şimdi, aksiyon görmek için daha önce olduğu gibi get_set_user çağırabilir. Fikir basit. Belirtecin
https://www.googleapis.com/robot/v1/metadata/x509/[email protected]'da belirtilen anahtarlardan biri tarafından imzalanmış olup olmadığını kontrol edin. Evetse, belirteci deşifre edin ve firebase kimliğini alın.
yukarıda belirtilen doc yok Raylar uygulanması –