Sample code for 30+ languages & platforms
Visual FoxPro

Test Salesforce OAuth2 Access Token

See more Salesforce Examples

Demonstrates how to make a simple Salesforce REST API call to test a previously obtained access token.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loJson
LOCAL loSbUrl
LOCAL loSbResponseBody
LOCAL loJsonResponse

lnSuccess = 0

*  This example does the following:

*  curl -X GET https://yourInstance.salesforce.com/services/oauth2/userinfo \
*       -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

loHttp = CreateObject('Chilkat.Http')

*  Use the following online tool to generate HTTP code from a CURL command
*  Convert a cURL Command to HTTP Source Code

*  This example assumes the OAuth2 access token was previously fetched 
*  and saved to a file.  See Get SalesForce OAuth2 Access Token via Authorization Flow

loJson = CreateObject('Chilkat.JsonObject')
lnSuccess = loJson.LoadFile("qa_data/tokens/_salesforce.json")
IF (lnSuccess = 0) THEN
    ? "Failed to load OAuth2 access token."
    RELEASE loHttp
    RELEASE loJson
    CANCEL
ENDIF

*  Here's an example of the JSON:

*  {
*    "access_token": "00D41000....uLZBpT6",
*    "refresh_token": "5Aep....25xdGgkrV",
*    "signature": "cjTbSc5DvcKpaMoRTzuQTJLb1tcMw8LEO01flq4aMD4=",
*    "scope": "refresh_token id",
*    "instance_url": "https://d41000000f8a0eak-dev-ed.my.salesforce.com",
*    "id": "https://login.salesforce.com/id/00D41000000F8A0EAK/005410000....xAAE",
*    "token_type": "Bearer",
*    "issued_at": "1738348388166"
*  }

*  Adds the "Authorization: Bearer YOUR_ACCESS_TOKEN" header.
loHttp.AuthToken = loJson.StringOf("access_token")

*  We want to build the following URL:  https://<instance_id>.salesforce.com/services/oauth2/userinfo
loSbUrl = CreateObject('Chilkat.StringBuilder')
loSbUrl.Append(loJson.StringOf("instance_url"))
loSbUrl.Append("/services/oauth2/userinfo")

loSbResponseBody = CreateObject('Chilkat.StringBuilder')
lnSuccess = loHttp.QuickGetSb(loSbUrl.GetAsString(),loSbResponseBody)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loJson
    RELEASE loSbUrl
    RELEASE loSbResponseBody
    CANCEL
ENDIF

? "Response status code = " + STR(loHttp.LastStatus)

loJsonResponse = CreateObject('Chilkat.JsonObject')
loJsonResponse.LoadSb(loSbResponseBody)
loJsonResponse.EmitCompact = 0
? loJsonResponse.Emit()

*  The expected JSON response is something like this:

*  {
*    "sub": "005xxxxxxxxxxxx",
*    "name": "John Doe",
*    "preferred_username": "johndoe@example.com",
*    "email": "johndoe@example.com",
*    "profile": "https://na85.salesforce.com/005xxxxxxxxxxxx"
*  ...
*  ...
*  }

RELEASE loHttp
RELEASE loJson
RELEASE loSbUrl
RELEASE loSbResponseBody
RELEASE loJsonResponse