Guarani 3w Login con Gmail

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.

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.

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 [b]Configuración[/b] -> 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 [b]permiso[/b]. 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 [b]Configuración[/b].

Espero su ayuda, y feliz año nuevo!

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.

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:


$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:


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.

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:


'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.

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:


'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:

header("Location: {$conf['auth_url']}?client_id={$conf['app_key']}&scope={$conf['scope']}&state={$_SESSION['state']}&$response_type=code}");

por esto:

header("Location: {$conf['auth_url']}?client_id={$conf['app_key']}&scope={$conf['scope']}&state={$_SESSION['state']}&$response_type=code&prompt={$conf['prompt']}");