Chilkat Online Tools

Swift / Orchestrator / Authenticate (Cloud)

Back to Collection Items

func chilkatTest() {
    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    let http = CkoHttp()
    var success: Bool

    // Use this online tool to generate code from sample JSON: Generate Code to Create JSON

    // The following JSON is sent in the request body.

    // {
    //   "grant_type": "refresh_token",
    //   "client_id": "{{clientId}}",
    //   "refresh_token": "{{userKey}}"
    // }

    let json = CkoJsonObject()
    json.UpdateString("grant_type", value: "refresh_token")
    json.UpdateString("client_id", value: "{{clientId}}")
    json.UpdateString("refresh_token", value: "{{userKey}}")

    http.SetRequestHeader("Content-Type", value: "application/json")
    http.SetRequestHeader("X-UIPATH-TenantName", value: "{{tenantName}}")

    var resp: CkoHttpResponse? = http.PostJson3("https://account.uipath.com/oauth/token", contentType: "application/json", json: json)
    if http.LastMethodSuccess == false {
        print("\(http.LastErrorText)")
        return
    }

    print("\(resp!.StatusCode.intValue)")
    print("\(resp!.BodyStr)")
    resp = nil

}

Curl Command

curl -X POST
	-H "Content-Type: application/json"
	-H "X-UIPATH-TenantName: {{tenantName}}"
	-d '{
    "grant_type": "refresh_token",
    "client_id": "{{clientId}}",
    "refresh_token": "{{userKey}}"
}'
https://account.uipath.com/oauth/token

Postman Collection Item JSON

{
  "name": "Authenticate (Cloud)",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "pm.test(\"Token Saved\", function () {",
          "    var oldToken = pm.environment.get(\"token\");",
          "    var jsonData = pm.response.json();",
          "    ",
          "    pm.environment.set(\"token\", jsonData.access_token);",
          "    pm.expect(pm.environment.get(\"token\")).to.not.equal(oldToken);",
          "});"
        ],
        "type": "text/javascript"
      }
    },
    {
      "listen": "prerequest",
      "script": {
        "exec": [
          "function GetTenant(url) {",
          "    var pieces = url.split('/');",
          "    ",
          "    // Check if user formatted the url correctly",
          "    if (pieces.length < 5)",
          "        throw \"Detected an invalid Cloud URL. Your URL must be in the form 'https://platform.uipath.com/<account logical name>/<tenant logical name>\";",
          "        ",
          "    // Return the last slug, which will be the tenant name",
          "    return pieces.pop();",
          "}",
          "    ",
          "// Get URL",
          "var url = pm.environment.get(\"url\");",
          "",
          "// Check if cloud URL",
          "if (url.includes(\"uipath.com\")) {",
          "    // Extract tenant from URL",
          "    var tenant = GetTenant(url);",
          "    pm.environment.set(\"tenantName\", tenant);",
          "}",
          "",
          "// Throw error if url is incorrect",
          "else {",
          "    throw \"This authentication method may only be used with Cloud Orchestrators (i.e. those hosted by uipath.com. Please change your URL (\" + url + \") if you intend to use a Cloud-hosted Orchestrator.\";   ",
          "}"
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "auth": {
      "type": "noauth"
    },
    "method": "POST",
    "header": [
      {
        "key": "Content-Type",
        "value": "application/json"
      },
      {
        "key": "X-UIPATH-TenantName",
        "value": "{{tenantName}}",
        "type": "text"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\r\n    \"grant_type\": \"refresh_token\",\r\n    \"client_id\": \"{{clientId}}\",\r\n    \"refresh_token\": \"{{userKey}}\"\r\n}"
    },
    "url": {
      "raw": "https://account.uipath.com/oauth/token",
      "protocol": "https",
      "host": [
        "account",
        "uipath",
        "com"
      ],
      "path": [
        "oauth",
        "token"
      ]
    },
    "description": "Retrieves an access token using the User Key found in your Cloud RPA console. This token lasts for 24 hours and is made available to authenticate all other calls."
  },
  "response": [
    {
      "name": "Authenticate (Cloud)",
      "originalRequest": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "User-Agent",
            "value": "",
            "disabled": true
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n    \"grant_type\": \"refresh_token\",\r\n    \"client_id\": \"{{clientId}}\",\r\n    \"refresh_token\": \"{{userKey}}\"\r\n}"
        },
        "url": {
          "raw": "https://account.uipath.com/oauth/token",
          "protocol": "https",
          "host": [
            "account",
            "uipath",
            "com"
          ],
          "path": [
            "oauth",
            "token"
          ]
        }
      },
      "_postman_previewlanguage": null,
      "header": null,
      "cookie": [
      ],
      "body": "{\r\n    \"access_token\": \"abcdefghijklmnopqrstuvwxyz1234567890\",\r\n    \"id_token\": \"z0y9x8w7v6u5t4s3r2q1ponmlkjihgfedcba\",\r\n    \"scope\": \"openid profile email offline_access\",\r\n    \"expires_in\": 86400,\r\n    \"token_type\": \"Bearer\"\r\n}"
    }
  ]
}