Cómo Firebase Auth con Rails?

He integrado completamente Firebase Auth en mi aplicación para Android, ahora quiero que el cliente interactúe con mi backend (carriles) utilizando un Token único. Mi pregunta es cómo se hace:

  1. El usuario ha iniciado sesión, utilizando, por ejemplo, Facebook Auth,
  2. Enviar el Token Firebase al backend y verificarlo
  3. Responder al cliente con un Token único para las próximas solicitudes de Api (obtener datos de usuarios, guardar datos de usuario …)

Gracias

No necesita el paso # 3. La API de Firebase Auth Android SDK getToken () devuelve un Token de ID de Firebase de corta duración (una hora) para el usuario de inicio de sesión y devuelve automáticamente un nuevo token si el anterior caduca.

El documento de verificación de tokens de Firebase describe cómo obtener un token de Firebase en la aplicación de cliente y verificar el token en el lado del servidor.

Teniendo en cuenta la respuesta de JinLiu, una vez que obtenga el Token en su código android, envíelo a su backend, diga: https://www.yourbackend.com?authenticate?token=asdad7687h … Tenga en cuenta que el token generado por Firebase es un JWT Token, primero tenemos que verificar su autenticidad y decodificarlo en el backend. Para esto, necesitas agregar estas dos gemas a tu gemfile gem 'jwt', '1.5.6' gem 'rest-client', '2.0.1' Con eso hecho, necesitas agregar estas dos funciones (privadas) en Su controlador:

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 

Ahora puede llamar a get_set_user como antes de la acción para ver, si el usuario tiene un token válido. La idea es simple. Compruebe si el token está firmado por una de las teclas mencionadas en https://www.googleapis.com/robot/v1/metadata/x509/[email protected] . En caso afirmativo, descodifique el token y obtenga el ID de firebase.

  • ¿Qué método de autenticación debo usar con la gema Sorcery usando una aplicación móvil?
  • Configurar la autenticación de http
  • Retrofit @Body apareciendo como parámetro en la petición HTTP
  • ¿Cómo crear un Api seguro de Rails REST para mi aplicación?
  • Diseña aplicaciones Omniauth y Iphone / Android
  • Api de Rails y autenticación nativa de aplicaciones para móviles
  • ¿Cómo usar doorkeeper con un cliente android?
  • Notificaciones Push utilizando el servidor Rails
  • ¿Cómo puedo verificar la facturación de Android en la aplicación con un servidor con Ruby?
  • Mover la aplicación web existente en una aplicación de teléfono nativa mediante un contenedor de navegador
  • Grape Rails API con Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.