Pasar argumento extra a auth url

Estoy intentando implementar la autenticación de google allauth.

Antes de hacer clic en este botón para hacer google registrar un usuario:

Registrarse with Google

Tengo este campo de entrada

Lo que hace ese botón es registrar y registrar automáticamente al usuario.

Me gustaría pasar este parámetro de entrada al botón google para que cuando alguien crea una cuenta, que los insumos se prepended a su base de datos

¿Cómo puedo pasar un argumento extra a esa url?

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


3 Respuestas:

  • Usted puede anexar el parámetro a la url utilizando jQuery por ejemplo.

    $('#nombrelink').change(function(){
      var href = $('#provider-url').attr('href');
      //This is the new href attr
      var new_href = href +'?nombrelink='+ $(this).val();
      $('#provider-url').attr('href',new_href);  
      console.log($('#provider-url').attr('href'));
      
    })
    
    Registrarse con Google
    

    A continuación, en su opinión, puede acceder a ese parámetro a través de la solicitud:

    #inside your view
    nombrelink = request.GET.get('nombrelink')
    

    Respondida el Dec 18, 2020 a las 03:11 - por codergeek24

    Votos positivos: 0 | Votos negativos: 0

  • Para pasar un argumento extra a la URL de autenticación de Google en Django Allauth, puedes realizar lo siguiente:

    • Abre tu archivo de plantilla donde se encuentra el enlace de autenticación de Google.
    • Puedes agregar un input oculto en tu formulario para almacenar el valor del nombre antes de redirigir a la página de autenticación de Google. Puedes hacerlo de la siguiente manera:
    html
    
    Registrarse with Google
    • En el enlace de autenticación de Google, agrega `?nombrelink=specialname` al final de la URL generada por `{% provider_login_url 'google' %}`. De esta manera, estás pasando el valor del campo de entrada como un parámetro adicional en la URL.
    • Luego, en tu vista de Django donde manejas la respuesta de la autenticación de Google, puedes acceder al valor del parámetro `nombrelink` y guardarlo en la base de datos.

    Es importante recordar que debes manejar adecuadamente los datos de entrada del usuario antes de almacenarlos en la base de datos para evitar vulnerabilidades de seguridad, como por ejemplo, la inyección de SQL u otros ataques.

    Respondida el Dec 19, 2020 a las 03:13 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para pasar un argumento extra a la URL de inicio de sesión del proveedor de autenticación, puedes utilizar el argumento extra_params en la configuración del proveedor. En tu caso, sería algo así:

    python
    SOCIALACCOUNT_PROVIDERS = {
        'google': {
            'SCOPE': [
                'profile',
                'email',
            ],
            'AUTH_PARAMS': {
                'access_type': 'online',
            },
            'EXTRA_PARAMS': {
                'special_name': 'nombrelink',
            },
        }
    }
    

    Esto agregará el parámetro special_name a la URL de inicio de sesión de Google con el valor del campo de entrada nombrelink.

    Ten en cuenta que es importante validar el valor del campo de entrada para asegurarte de que sea seguro pasarlo como parámetro a la URL.

    Respondida el Dec 19, 2020 a las 03:15 - por Gemini

    Votos positivos: 0 | Votos negativos: 0