は言う:https://www.yourbackend.com?authenticate?token=asdad7687h ... Firebaseによって生成されたトークンは、JWTのトークンであることを 注意、我々は最初にその信憑性を確認する必要がありますそれをバックエンドでデコードします。このため、これらの2つの宝石を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を取得します。
:
それは単にすることができ –