Sample code for 30+ languages & platforms
Tcl

SugarCRM Authenticate

See more SugarCRM Examples

Demonstrates how to authenticate to the SugarCRM REST v10 API. This is how an OAuth2 access token is obtained.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

set rest [new_CkRest]

set success [CkRest_Connect $rest "your.site.domain" 443 1 1]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

CkRest_AddHeader $rest "Cache-Control" "no-cache"

# The following code creates the JSON request body.
# The JSON created by this code is shown below.
set jsonReq [new_CkJsonObject]

CkJsonObject_UpdateString $jsonReq "grant_type" "password"
CkJsonObject_UpdateString $jsonReq "client_id" "sugar"
CkJsonObject_UpdateString $jsonReq "client_secret" "CLIENT_SECRET"
CkJsonObject_UpdateString $jsonReq "username" "admin"
CkJsonObject_UpdateString $jsonReq "password" "password"
CkJsonObject_UpdateString $jsonReq "platform" "custom_api"

# The JSON request body created by the above code:

# {
#   "grant_type": "password",
#   "client_id": "sugar",
#   "client_secret": "CLIENT_SECRET",
#   "username": "admin",
#   "password": "password",
#   "platform": "custom_api"
# }

set sbReq [new_CkStringBuilder]

CkJsonObject_EmitSb $jsonReq $sbReq

CkRest_AddHeader $rest "Content-Type" "application/json"

set sbJson [new_CkStringBuilder]

set success [CkRest_FullRequestSb $rest "POST" "/rest/v10/oauth2/token" $sbReq $sbJson]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkJsonObject $jsonReq
    delete_CkStringBuilder $sbReq
    delete_CkStringBuilder $sbJson
    exit
}

if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "Received error response code: [CkRest_get_ResponseStatusCode $rest]"
    puts "Response body:"
    puts [CkStringBuilder_getAsString $sbJson]
    delete_CkRest $rest
    delete_CkJsonObject $jsonReq
    delete_CkStringBuilder $sbReq
    delete_CkStringBuilder $sbJson
    exit
}

set json [new_CkJsonObject]

CkJsonObject_LoadSb $json $sbJson

# The following code parses the JSON response.
# A sample JSON response is shown below the sample code.

set access_token [CkJsonObject_stringOf $json "access_token"]
set expires_in [CkJsonObject_IntOf $json "expires_in"]
set token_type [CkJsonObject_stringOf $json "token_type"]
set scope [CkJsonObject_IsNullOf $json "scope"]
set refresh_token [CkJsonObject_stringOf $json "refresh_token"]
set refresh_expires_in [CkJsonObject_IntOf $json "refresh_expires_in"]
set download_token [CkJsonObject_stringOf $json "download_token"]

# A sample JSON response body that is parsed by the above code:

# {
#   "access_token": "c6d495c9-bb25-81d2-5f81-533ef6479f9b",
#   "expires_in": 3600,
#   "token_type": "bearer",
#   "scope": null,
#   "refresh_token": "cbc40e67-12bc-4b56-a1d9-533ef62f2601",
#   "refresh_expires_in": 1209600,
#   "download_token": "cc5d1a9f-6627-3349-96e5-533ef6b1a493"
# }

puts "Example Completed."

delete_CkRest $rest
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbReq
delete_CkStringBuilder $sbJson
delete_CkJsonObject $json