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