말 : https://www.yourbackend.com?authenticate?token=asdad7687h이 ... 중포 기지에 의해 생성 된 토큰이 JWT 토큰입니다 하는 것으로, 우리가 먼저 진위를 확인해야합니다 그것을 백엔드에서 디코딩합니다. 이를 위해 gemfile에이 두 개의 보석을 추가해야합니다. gem 'jwt', '1.5.6' gem 'rest-client', '2.0.1' 완료되면이 두 컨트롤러의) 기능 : 사용자가 유효한 토큰이있는 경우
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
지금 당신이 작업을 참조하십시오 전에로 get_set_user 호출 할 수 있습니다. 아이디어가 간단합니다. 토큰이
https://www.googleapis.com/robot/v1/metadata/x509/[email protected]에 언급 된 키 중 하나에 의해 서명되었는지 확인하십시오. 그렇다면 토큰을 디코딩하고 파이어베이스 ID를 가져옵니다.
위에서 언급 한 문서가 없습니다 레일 구현 –