Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oRest
LOCAL oJsonReq
LOCAL oSbReq
LOCAL oSbJson
LOCAL oJson
LOCAL cAccess_token
LOCAL nExpires_in
LOCAL cToken_type
LOCAL nScope
LOCAL cRefresh_token
LOCAL nRefresh_expires_in
LOCAL cDownload_token

nSuccess := 0

oRest := CreateObject("Chilkat.Rest")

nSuccess := oRest:Connect("your.site.domain", 443, 1, 1)
IF (nSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    RETURN
ENDIF

oRest:AddHeader("Cache-Control", "no-cache")

//  The following code creates the JSON request body.
//  The JSON created by this code is shown below.
oJsonReq := CreateObject("Chilkat.JsonObject")
oJsonReq:UpdateString("grant_type", "password")
oJsonReq:UpdateString("client_id", "sugar")
oJsonReq:UpdateString("client_secret", "CLIENT_SECRET")
oJsonReq:UpdateString("username", "admin")
oJsonReq:UpdateString("password", "password")
oJsonReq:UpdateString("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"
//  }

oSbReq := CreateObject("Chilkat.StringBuilder")
oJsonReq:EmitSb(oSbReq)

oRest:AddHeader("Content-Type", "application/json")

oSbJson := CreateObject("Chilkat.StringBuilder")
nSuccess := oRest:FullRequestSb("POST", "/rest/v10/oauth2/token", oSbReq, oSbJson)
IF (nSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    oJsonReq:destroy()
    oSbReq:destroy()
    oSbJson:destroy()
    RETURN
ENDIF

IF (oRest:ResponseStatusCode != 200)
    ? "Received error response code: " + Str(oRest:ResponseStatusCode)
    ? "Response body:"
    ? oSbJson:GetAsString()
    oRest:destroy()
    oJsonReq:destroy()
    oSbReq:destroy()
    oSbJson:destroy()
    RETURN
ENDIF

oJson := CreateObject("Chilkat.JsonObject")
oJson:LoadSb(oSbJson)

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

cAccess_token := oJson:StringOf("access_token")
nExpires_in := oJson:IntOf("expires_in")
cToken_type := oJson:StringOf("token_type")
nScope := oJson:IsNullOf("scope")
cRefresh_token := oJson:StringOf("refresh_token")
nRefresh_expires_in := oJson:IntOf("refresh_expires_in")
cDownload_token := oJson:StringOf("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"
//  }

? "Example Completed."

oRest:destroy()
oJsonReq:destroy()
oSbReq:destroy()
oSbJson:destroy()
oJson:destroy()