Autor Tema: Guarani 3w Login con Gmail  (Leído 1335 veces)

0 Usuarios y 1 Visitante están viendo este tema.

gmart

  • General Guarani
  • *
  • Mensajes: 404
    • Ver Perfil
    • UDC
  • Institución: Universidad del Chubut
  • Nombre y apellido: Guillermo Martínez
  • Sistema: Guarani
  • Teléfono laboral: 02804481866
  • Utilizo algun sistéma del SIU: Sí
Guarani 3w Login con Gmail
« on: Diciembre 10, 2018, 10:22:50 am »
Buen día, les comento que estamos utilizando guarani 3w 2.9.4 y necesitamos que tanto estudiantes como docentes accedan con sus cuentas de google apps for education o lo que es similar Gmail.
Tienen desarrollado o saben de alguien que haya hecho el proceso de login con cuentas de Gmail?
Muchas gracias.

Leonel Leonardis

  • Moderador Global
  • *****
  • Mensajes: 2815
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: SIU-Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Guarani 3w Login con Gmail
« Respuesta #1 on: Diciembre 27, 2018, 12:08:41 pm »
Hola Guillermo,

Se podría configurar en el archivo instalacion/login.php, donde dice "cuenta_ext". Tenes que poner 'activo'     => true, y luego configurar los datos de 'google' o 'google_oid', y ya con eso debería salir funcionando.

Básate en el archivo instalacion/login_template.php.

Te dejo este link: http://portalguarani.siu.edu.ar/trac/Portal-G3/wiki/G2/3w/2.9.4/DocTecnica/Instalacion#AccesoporCuentasExternas

El mismo tiene como hacerlo para Facebook pero no para Google, pero el procedimiento es similar.


También te recomiendo que busques en el foro (yo busque "Login Google"), hay otros hilos que tratan este tema, te dejo uno que te va a servir: http://foro.comunidad.siu.edu.ar/index.php?topic=11097

saludos.

« Última Modificación: Diciembre 27, 2018, 12:15:19 pm por lleonardis »

gmart

  • General Guarani
  • *
  • Mensajes: 404
    • Ver Perfil
    • UDC
  • Institución: Universidad del Chubut
  • Nombre y apellido: Guillermo Martínez
  • Sistema: Guarani
  • Teléfono laboral: 02804481866
  • Utilizo algun sistéma del SIU: Sí
Re:Guarani 3w Login con Gmail
« Respuesta #2 on: Enero 03, 2019, 05:42:45 pm »
Hola,

    Ya realicé los pasos correspondientes, y puedo ingresar a autogestión 3W con la cuenta de Google. Sabes si es posible que la vinculación se haga de una manera directa (sin que el usuario tenga que logearse la 1ra vez -> ir a Configuración -> Permitir Login con Google)??

    Revisé muchos artículos (como el que me pasaron más arriba) pero en ninguno habla de la vinculación sin ese permiso. A lo que apunto es que, luego de configurar el login.php + clave_publica + clave_privada, directamente el usuario pueda ingresar con su cuenta de Google sin tener que pasar por la Configuración.

    Espero su ayuda, y feliz año nuevo!

Leonel Leonardis

  • Moderador Global
  • *****
  • Mensajes: 2815
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: SIU-Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Guarani 3w Login con Gmail
« Respuesta #3 on: Enero 04, 2019, 04:37:47 pm »
Hola Guillermo, Feliz Año igualmente!!!

Guaraní necesita que vincules la cuenta de Gmail desde la operación Configuración, ya que el usuario debe elegir con que cuenta de Gmail lo quiere vincular y autenticarse en ella.

Podes ver de personalizar si queres hacerlo de forma automática. La tabla en cuestión que vincula a la persona (mdp_personas) con la cuenta externa es acc_login_externos. La cuestión es obtener el valor de la columna id_externo, ya que este lo genera Google cuando se vincula la cuenta.

saludos.
« Última Modificación: Enero 04, 2019, 04:42:02 pm por lleonardis »

Leonel Leonardis

  • Moderador Global
  • *****
  • Mensajes: 2815
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: SIU-Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Guarani 3w Login con Gmail
« Respuesta #4 on: Enero 07, 2019, 11:45:36 am »
Hola Guillermo,

Hay una forma de obtener el id_externo para la tabla acc_login_externos. Cuando se vincula a una cuenta externa se termina invocado la función accion__vincular_cuenta_externa de la clase src/siu/operaciones/configuracion/controlador.php. Si ves hace lo siguiente:

Código: [Seleccionar]
$datos = $manager->obtener_datos_cuenta($proveedor, $url_procesar);

donde:

$proveedor = "google";
$url_procesar = kernel::vinculador()->crear('configuracion', 'vincular_cuenta_externa', $proveedor); ej: http://localhost/3w/trunk3/configuracion/vincular_cuenta_externa/google

$datos es un array con la siguiente estructura, el id es lo que iría en la columna id_externo:
Código: [Seleccionar]
Array
(
    [id] => 108985541088504643139
    [mail] => pruebas@gmail.com
    [proveedor] => google
    [persona] => 2
)

Ya con esto podrías hacer un proceso que automáticamente vincule directamente con las cuentas de GMAIL de los alumnos.

saludos.

sebastianmir

  • Newbie
  • *
  • Mensajes: 43
    • Ver Perfil
  • Institución: UNSAdA
  • Nombre y apellido: Sebastián Mir
  • Teléfono laboral: +54(2326)453079
Re:Guarani 3w Login con Gmail
« Respuesta #5 on: Febrero 20, 2019, 02:17:54 pm »
Buenas, estoy con algo similar, en nuestro caso las cuentas institucionales están montadas en la plataforma de G Suite, por lo que queremos que los alumnos puedan utilizar esa cuenta para iniciar sesión en G3W.

Estuve viendo lo que publicó Leonel pero el problmea es que  para que el proceso se pueda realizar es necesario que el usuario elija la cuenta que quiere asociar (en el selector de cuentas de google)  o iniciar sesión en caso de que no tenga la sesión iniciada en la cuenta en cuestión.

La vuelta que le encontré fue rellenar la tabla acc_login_externos ingresando en el campo id_externo  el correo institucional de cada alumno y en la configuración de login.php cambie el id_path por email quedando:

Código: [Seleccionar]
'cuenta_ext' => array(
'activo'     => true,
'clase'      => 'modelo\\autenticacion\\auth_cuenta_ext',
'parametros' => array(
'proveedores' => array(
'google'   => array(
'tipo' => 'oauth2',
'icono'      => 'img/login/google.jpg',
'app_key'    => 'xxx,
'app_secret' => 'xxx,
'scope'      => 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.em$
'auth_url'   => 'https://accounts.google.com/o/oauth2/auth',
'acc_url'    => 'https://accounts.google.com/o/oauth2/token',
'id_url'     => 'https://www.googleapis.com/oauth2/v1/userinfo',
'id_path'    => 'email',
'email_path' => 'email',
)
)
)
),

Saludos y espero que sea útil el aporte.

sebastianmir

  • Newbie
  • *
  • Mensajes: 43
    • Ver Perfil
  • Institución: UNSAdA
  • Nombre y apellido: Sebastián Mir
  • Teléfono laboral: +54(2326)453079
Re:Guarani 3w Login con Gmail
« Respuesta #6 on: Marzo 05, 2019, 07:38:15 pm »
Aporto algunas cositas:
Si bien funcionó perfecto el login y el actualizar de forma masiva la tabla para los usuarios, se daba el siguiente problema:
-La persona tenía iniciada su sesión personal de gmail.
-Al ingresar a  Autogestión e intentar iniciar sesión con google nunca le solicitaba con que cuenta iniciar y tomaba por defecto la personal que ya estaba iniciada.

Si al intentar iniciar sesión con google ya tenía abierta su cuenta personal y la institucional ahí si salta el selector de cuentas de google y no hay  problema, pero como muchos alumnos no lo hacen y/o no están muy cancheros en cuestiones informáticas, investigando vi que existe un parámetro "prompt" el cual permite forzar la selección de cuentas (https://developers.google.com/identity/protocols/OAuth2WebServer#creatingclient).

Así que hice lo siguiente:
en instalacion/login.php agregué el parámetro prompt a la configuración del login con google, quedando:
Código: [Seleccionar]
'cuenta_ext' => array(
'activo'     => true,
'clase'      => 'modelo\\autenticacion\\auth_cuenta_ext',
'parametros' => array(
'proveedores' => array(
'google'   => array(
'tipo' => 'oauth2',
'icono'      => 'img/login/google.jpg',
'app_key'    => 'xxx,
'app_secret' => 'xxx,
'scope'      => 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.em$
'auth_url'   => 'https://accounts.google.com/o/oauth2/auth',
'acc_url'    => 'https://accounts.google.com/o/oauth2/token',
'id_url'     => 'https://www.googleapis.com/oauth2/v1/userinfo',
'id_path'    => 'email',
'email_path' => 'email',
'prompt' => 'select_account',
)
)
)
),

y edité la linea del archivo que le pega a la auth_url para agregar ese parámetro en el request:
vendor/siu/chulupi-framework/src/SIU/Chulupi/util/ServiciosExternos.php en la línea 146:
cambié esto:
Código: [Seleccionar]
header("Location: {$conf['auth_url']}?client_id={$conf['app_key']}&scope={$conf['scope']}&state={$_SESSION['state']}&$response_type=code}");por esto:
Código: [Seleccionar]
header("Location: {$conf['auth_url']}?client_id={$conf['app_key']}&scope={$conf['scope']}&state={$_SESSION['state']}&$response_type=code&prompt={$conf['prompt']}");