Desaparecido cliente_id parámetro.on heroku rails 6

Estoy tratando de autenticar el usuario en la aplicación ferroviaria 6 usando omniauth. Funciona localmente pero cuando me desplegué a heroína estaba recibiendo un error diciendo id inválido.

Miré alrededor y encontré un post sobre la actualización de la gema de sólo omniauth-facebook a gem 'omniauth-facebook', '1.4.0', así que lo hice y ahora simplemente vuelve a la página de inicio sin iniciar sesión en local y en heroku obtengo este error:

{
   "error": {
      "message": "Missing client_id parameter.",
      "type": "OAuthException",
      "code": 101,
      "fbtrace_id": "AYAEC-EyMzZgNXYS2L9klkw"
   }
}

Puse mis credenciales en las credenciales. Yml file:

facebook:
  facebook_client_id: 1234123412341234
  facebook_client_secret: 12345123451234512345

Mi archivo de diseño.rb es:

config.omniauth :facebook, Rails.application.credentials.dig(:facebook, :facebook_client_id),
  Rails.application.credentials.dig(:facebook, :facebook_client_secret), scope: 'public_profile,email', info_fields: 'email, first_name, last_name, picture'

Si necesita ver cualquier otro código hágamelo saber y yo editaré la pregunta.

Pregunta hecha hace 3 años, 4 meses, 29 días - Por codercentaur


3 Respuestas:

  • Creo que tu credentials.yml está dentro. .gitignore archivo, intenta agregar las credenciales en heroku config vars.

    Respondida el Dec 17, 2020 a las 17:43 - por phpphoenix

    Votos positivos: 0 | Votos negativos: 0

  • El error "Missing clientid parameter" se refiere a que el parámetro clientid no se está proporcionando correctamente al intentar autenticar con Facebook. En tu archivo de diseño.rb, estás tratando de acceder a las credenciales de la siguiente forma: Rails.application.credentials.dig(:facebook, :facebook_client_id).

    Este error puede ocurrir si las credenciales no se están cargando adecuadamente en el entorno de producción (Heroku). Una solución recomendada para manejar las credenciales en producción de manera segura es utilizando variables de entorno.

    Puedes configurar las variables de entorno en Heroku de la siguiente manera:

    • En tu terminal, ejecuta el siguiente comando para configurar las credenciales en Heroku:
    
       heroku config:set FACEBOOKCLIENTID=1234123412341234
       heroku config:set FACEBOOKCLIENTSECRET=12345123451234512345
       

    • Modifica tu archivo de diseño.rb para utilizar las variables de entorno en lugar de acceder a las credenciales del archivo credentials.yml:
    ruby
       config.omniauth :facebook, ENV['FACEBOOKCLIENTID'], ENV['FACEBOOKCLIENTSECRET'], scope: 'publicprofile,email', infofields: 'email, firstname, lastname, picture'
       

    Al hacer esto, las credenciales se cargarán correctamente en Heroku a través de las variables de entorno y deberías poder autenticar con Facebook sin recibir el error de "Missing client_id parameter".

    Recuerda también que después de hacer cambios es importante reiniciar la aplicación en Heroku para que los cambios surtan efecto. Puedes hacerlo ejecutando heroku restart en tu terminal.

    Respondida el Dec 18, 2020 a las 17:43 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás encontrando indica que falta el parámetro client_id en tu solicitud de autenticación. Aquí tienes algunos pasos que puedes seguir para resolver este problema:

    • Verifica tu archivo de configuración: Asegúrate de que has configurado correctamente las credenciales de Facebook en `config/credentials.yml.enc`. El archivo debe tener el siguiente formato:
    
    facebook:
      facebook_client_id: 
      facebook_client_secret: 
    
    • Actualiza tu archivo de inicialización de OmniAuth: En `config/initializers/omniauth.rb`, asegúrate de que estás configurando correctamente el proveedor de Facebook:
    ruby
    Rails.application.config.omniauth :facebook, Rails.application.credentials.dig(:facebook, :facebook_client_id),
                                                       Rails.application.credentials.dig(:facebook, :facebook_client_secret),
                                                       scope: 'public_profile,email', info_fields: 'email, first_name, last_name, picture'
    
    • Borra las cookies y el caché: Elimina las cookies y el caché de tu navegador, ya que podrían estar almacenando información de inicio de sesión anterior que está provocando el error.
    • Inténtalo de nuevo: Una vez que hayas realizado los cambios necesarios, intenta iniciar sesión a través de Facebook de nuevo. Si el problema persiste, puedes intentar lo siguiente:

    Habilitar el modo de depuración en OmniAuth estableciendo Rails.application.config.omniauth.facebook.debug = true en config/initializers/omniauth.rb. Esto proporcionará información adicional de registro que puede ayudarte a identificar el problema. Verificar que tu aplicación de Facebook esté configurada correctamente. Puedes comprobar la configuración de tu aplicación en el Portal para desarrolladores de Facebook.

    • Ponerse en contacto con el soporte técnico de Heroku para obtener más ayuda.

    Si el problema aún no se resuelve, proporciona el registro completo de la solicitud de autenticación fallida para una mayor depuración.

    Respondida el Dec 18, 2020 a las 17:50 - por Gemini

    Votos positivos: 0 | Votos negativos: 0