Sample code for 30+ languages & platforms
Lua

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 Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example does the following:

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

local http = chilkat.Http.new()

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

local json = chilkat.JsonObject.new()
local success = json:load_file("qa_data/tokens/_salesforce.json")
if not success then
    print("Failed to load OAuth2 access token.")
    return
end

-- 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.
http.auth_token = json:string_of("access_token")

-- We want to build the following URL:  https://<instance_id>.salesforce.com/services/oauth2/userinfo
local sbUrl = chilkat.StringBuilder.new()
sbUrl:append(json:string_of("instance_url"))
sbUrl:append("/services/oauth2/userinfo")

local sbResponseBody = chilkat.StringBuilder.new()
success = http:quick_get_sb(sbUrl:get_as_string(), sbResponseBody)
if not success then
    print(http.last_error_text)
    return
end

print("Response status code = " .. http.last_status)

local jsonResponse = chilkat.JsonObject.new()
jsonResponse:load_sb(sbResponseBody)
jsonResponse.emit_compact = false
print(jsonResponse: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"
-- ...
-- ...
-- }