Llamar a la Api de Orquestador usando Python y Oauth 2024

Hola a todos,

Estoy tratando de conectarme con la API de UiPath utilizando Python, pero estoy encontrando algunos problemas con la autenticación. Aquí está lo que he hecho hasta ahora:

  1. Configuración en UiPath:
  • He creado una aplicación externa en UiPath con los siguientes detalles:
    Client ID:**
    Client Secret:**
  • Las URLs que estoy utilizando son:
    • Auth URL:** https://cloud.uipath.com/identity_/connect/authorize
    • Access Token URL:** https://cloud.uipath.com/identity_/connect/token
    • Scope:** OR.Robots OR.Execution OR.Queues OR.Jobs OR.Folders OR.Tasks OR.Machines
  • En Postman, puedo obtener el token de acceso sin problemas utilizando estas configuraciones.
  1. Python:** Estoy utilizando el siguiente código para obtener un token de acceso y luego hacer una solicitud a un endpoint de UiPath:
    Import requests

client_id = ‘xxx’
client_secret = ‘xxxx’
base_url = ‘https://cloud.uipath.com/
token_url = f’{base_url}identity_/connect/token’

token_data = {
‘grant_type’: ‘client_credentials’,
‘client_id’: client_id,
‘client_secret’: client_secret,
}

try:
response = requests.post(token_url, data=token_data)
response.raise_for_status()

response_json = response.json()
access_token = response_json.get('access_token')
print(f'Token de acceso obtenido: {access_token}')

headers = {'Authorization': f'Bearer {access_token}'}
endpoint_url = 'provder/api/some_endpoint'  
response = requests.get(f'{base_url}{endpoint_url}', headers=headers)
response.raise_for_status()

print(response.json())

except requests.exceptions.HTTPError as http_err:
print(f’Error HTTP: {http_err}‘)
print(f’Status Code: {response.status_code}’)
print(f’Respuesta completa: {response.text}‘) # Imprime la respuesta completa para depuración
except Exception as err:
print(f’Ocurrió un error: {err}’)
raise

Cuando ejecuto el código, recibo el siguiente error: Error HTTP: 400 Client Error: Bad Request for url: https://cloud.uipath.com/identity_/connect/token
Status Code: 400
Respuesta completa: {“error”:“unauthorized_client”}

He revisado varias veces el client_id y el client_secret, y ambos son correctos. También he verificado que los scopes y las URLs sean correctas. ¿Qué me está faltando o en qué estoy fallando?

Can you show how you configured the external application?

Did you try the token retrieval in Postman? If yes, the result is the same?