Tcl
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
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