Buenos días,
estoy tratandom de acceder a Syspass, a través de su API, mediante un cliente desarrollado en python. El código del script es:
import httplib,urllib
params = urllib.urlencode({'jsonrpc':'2.0','method':'backup','params':{'authToken':'CODE TOKEN'},'id':1})
conn = httplib.HTTPConnection('192.168.56.101', 80)
headers = {'Content-Type': 'application/json',
'Content-Length': len(params),
'Accept-Language': 'en-ES'}
req = conn.request('POST', '/syspass/api.php',params,headers= headers)
res = conn.getresponse()
Pero la única respuesta que obtengo es:
{"jsonrpc":"2.0","error":{"code":-32700,"message":"Datos inv\u00e1lidos","data":""},"id":null}
¿Alguna idea de lo que puedo estar haciendo mal?
Un saludo y gracias
Buenas,
parece ser que la codificación en JSON no es correcta. No he programado mucho en python, por lo que lo mejor es buscar en algún sitio especializado:
https://stackoverflow.com/questions/2817481/how-do-i-request-and-process-json-with-python#12402180
Saludos!
Buenos días,
muchas gracias, es cierto, estaba formando mal el mensaje, ya puedo acceder.
Ahora estoy intentado recuperar una password de usuario y tengo el siguiente problema:
Envio el siguiente mensaje:
{"params": {"authToken": "7669c296440d97a119d0978710c5a15a47ea98b4e52d112c82ecb5b614fa7f4e", "id": "Prueba1", "tokenPass": "PASSWORD DEL USUARIO DE ACCESO"}, "jsonrpc": "2.0", "method": "getAccountPassword", "id": 1}
La respuesta de syspass es:
{"jsonrpc":"2.0","error":{"code":0,"message":"La cuenta no existe","data":""},"id":1}
Evidentemente la cuenta existe y el usuario de acceso tiene permisos para ver las password.
¿Alguna idea?
Un Saludo
Vale, ya lo he logrado. Hay que buscar antes el identificador de la cuenta, que no es el atributo "Nombre" ni "login".
¿Hay alguna forma de hacerlo sin tener que realizar una búsqueda antes?. Por otro lado, ¿podemos darle al usuario de acceso, los permisos necesarios para buscar cuentas y ver password simultáneamente?
Un saludo y gracias
Buenas, el funcionamiento habitual de las APIs es un resultado por consulta, por lo que lo normal es hacer primero una búsqueda y posteriormente consultar por id, ya que el único identificador de la cuenta es el id (varias cuentas pueden llamarse igual).
Por otro lado, todos las acciones API concedidas a un usuario comparten el mismo token.
Saludos!
Gracias por todo, lo implementaré así
Perfecto!