Documentación - Contenedor 'login'

¿Buscas la Documentación API v1?

Conexión del usuario

El contenedor permite conectar el chef que esta usando el graph. La conexión consiste en obtener un token de sesión para acceder a la información personal del chef.
Cualquier acceso ulterior que esta en relación con la información personal del chef (como agregar una receta a favoritos, colección, mis recetas, mi lista del súper, subir una receta, una foto, etc) tendrá que enviar este token adjunto a los demás datos.
El token es una cadena alfanumérica aleatoria y desechable, decir que desaparece cuando el chef hace un logout, y no es usada más. De la misma manera, esta apegada al chef y no se puede usar para otro chef.

Para realizar un login, hay 2 maneras de enviar los datos:
- 1. Login nativo:
El sistema necesita el correo y la contraseña de usuario.
- 2. Login por redes sociales (a través de Gigya):
El sistema necesita el objeto usuario de gigya, y eventualmente un token si el usuario YA esta conectado.

Cuando se realiza un login por red social, pueden surgir varios esquemas:
a. El usuario ya esta conectado => enlaza automaticamente la red social a esta cuenta conectada.
b. El usuario ya esta conocido => Lo loggea y regresa sus datos de conexión.
c. El usuario aún no esta conocido (nuevo) => lo enlaza y verifica sus datos sociales contra lo que existe en kiwilimon:
c-1. La red social no comparte ningun correo electrónico:
regresa el estatus "REGISTRO", hay que enseñar los campos adjuntos al usuario para que sepa que vamos a usar de su red social, y hay que preguntarle:
Nuevo registro ? => pon tu correo, contraseña, nombre, apellido, suscribir al newsletter, aceptar las políticas (basicamente los MISMOS campos que el registro nativo, pero pre-rellenando los campos que ya tenemos)
Enviar la información capturada a /v2/chefsocial/put junto con el objeto de gigya de nuevo
Ya tienes cuenta ? => correo: contraseña: (un login nativo)
Enviar la información capturada a /v2/chefsocial/post junto con el objeto de gigya de nuevo

c-2. La red social comparte un correo que no tenemos en base de datos:
regresa el estatus "REGISTRO", hay que enseñar los campos adjuntos al usuario para que sepa que vamos a usar de su red social, y hay que preguntarle:
Nuevo registro ? => pon tu correo, contraseña, nombre, apellido, suscribir al newsletter, aceptar las políticas (basicamente los MISMOS campos que el registro nativo, pero pre-rellenando los campos que ya tenemos)
Enviar la información capturada a /v2/chefsocial/put junto con el objeto de gigya de nuevo
Ya tienes cuenta ? => correo: contraseña: (un login nativo, rellenando el campo correo con el correo de la red social)
Enviar la información capturada a /v2/chefsocial/post junto con el objeto de gigya de nuevo

c-3. La red social comparte un correo que ya tenemos en base de datos:
regresa el estatus "CONFIRMA", hay que enseñar los campos adjuntos al usuario para que sepa que vamos a usar de su red social, y hay que preguntarle:
Ya tienes cuenta!: => correo: contraseña: (un login nativo, rellenando el campo correo con el correo de la red social)
Enviar la información capturada a /v2/chefsocial/post junto con el objeto de gigya de nuevo

Solicitud de conexión nativa

El login se realiza a través de un POST:

[POST] /v2/login
user=chef@kiwilimon.com
pass=12345678
formato=json
Los campos son los siguientes:
user: El correo del chef a conectar
pass: La contraseña del chef a conectar
formato: Es el formato en el cual queremos los resultados. Es uno de 'json', 'xml' o 'txt. Es un parámetro opcional, y si no esta especificado regresa un JSON por defecto.

Solicitud de conexión por Gigya

El login se realiza a través de un POST:

[POST] /v2/login
gigya={[el objeto del usuario de gigya en formato JSON]}
app=1
token=[token]
formato=json
Los campos son los siguientes:
gigya: El objeto de usuario de gigya en formato JSON
app: 1 para regresar las credenciales de login para APP
token: El token del usuario conectado, Opcional
formato: Es el formato en el cual queremos los resultados. Es uno de 'json', 'xml' o 'txt. Es un parámetro opcional, y si no esta especificado regresa un JSON por defecto.

Respuesta del servidor al login

Si el login se realizo correctamente, el sistema regresa una serie de datos para su uso para los accesos posteriores al graph:

{
  "token":"B9sl6n7wH537bH87aWwItP96",
  "UID":100468,
  "sessionToken":"AT3_29E127758D552775CCA94EA72CB2C489_lIHnKM4CfbFmmnWHn2eTmeUNBm9GygoBvyJ2PWqkK9yQ6sMGqqZ6ElkMXwkbJXiub84VQB8PU-Du93DJm4T_Hagvky3el8AUfVdEl1t_8O7zOLOKeuCCxWZ5jW4KMw4UUJz_lgy-7IouxMjy3VfnPg==",
  "sessionSecret":"BZzfZtOIGHUQvqGxb2SWng=="
}
Los campos son los siguientes:
token: El token para usar el GRAPH
UID: La clave del chef conectado
sessionToken: El token de sesión de Gigya para acceder la API de gigya para compartir redes sociales y otros
sessionSecret: La palabra secreta del token de sesión de Gigya

Si es un usuario nuevo social, la respuesta regresada tiene el formato siguiente:

{
  "estatus":"REGISTRO",
  "GUID":"XIAIUYTOEWKD_JKSJDYFGF",
  "nombre":"[nombre]",
  "apellido":"[apellido]",
  "correo":"[correo]",
  "sexo":"[sexo]",
  "dianacim":"[dia de nacimiento]",
  "mesnacim":"[mes de nacimiento]",
  "anonacim":"[año de nacimiento]",
  "foto":"[imagen de la red social]"
}
El estatus es REGISTRO o CONFIRMA (ver introducción de esta página para saber como usarlos).

Si hubo un error, la respuesta regresada tiene el formato siguiente:

{
  "estatus":"error",
  "error":1,
  "message":"No conectado"
}
Los campos son los siguientes:
error: El código del error encontrado
message: El mensaje en español

Los diferentes códigos de errores son los siguientes:
1: El conjunto user/pass no funciono con ningún usuario en la base de datos (user inexistente o pass erróneo)
2: Parece que el objeto de gigya esta dañado o no válido. Se necesita un registro con la red social, no un login
3: No hay chef kiwi dentro del objeto de gigya. Se necesita un registro con la red social, no un login
4: El chef kiwi que esta en el objeto de gigya no existe en kiwilimon. es tecnicamente un error grave ya que gigya dice que el chef existe en kiwilimón pero no tenemos rastro de este chef. Se recomienda en este caso reorientar al registro.