Sample code for 30+ languages & platforms
Lua

Google Drive Refresh Access Token

See more Google Drive Examples

Demonstrates how to automatically refresh the access token when it expires.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local success = true

-- This example uses a previously obtained access token having permission for the
-- Google Drive scope.

-- The access token (and refresh token) was previously saved to a JSON file with this format:
-- See Get Google Drive OAuth2 Access Token

-- {
--   "access_token": "ya29.Gls-BsdxTWuenChv ... yzVIrXikkLxu5T6dy4I6GjADFardoz4Lruw",
--   "expires_in": 3600,
--   "refresh_token": "1/tMBJ ... 27D-Hk6rpQYBA",
--   "scope": "https://www.googleapis.com/auth/drive",
--   "token_type": "Bearer"
-- }

local json = chilkat.JsonObject.new()
local tokenFilePath = "qa_data/tokens/googleDrive.json"
json:load_file(tokenFilePath)

local oauth2 = chilkat.OAuth2.new()
oauth2.access_token = json:string_of("access_token")
oauth2.refresh_token = json:string_of("refresh_token")

oauth2.authorization_endpoint = "https://accounts.google.com/o/oauth2/v2/auth"
oauth2.token_endpoint = "https://www.googleapis.com/oauth2/v4/token"

--  Replace these with actual values.
oauth2.client_id = "GOOGLE-CLIENT-ID"
oauth2.client_secret = "GOOGLE-CLIENT-SECRET"
oauth2.scope = "https://www.googleapis.com/auth/drive"

-- Use OAuth2 to refresh the access token.
success = oauth2:refresh_access_token()
if not success then
    print(oauth2.last_error_text)
    return
end

print(oauth2.access_token_response)

-- Save the new access token to our JSON file (so we can refresh it again when needed).
json:update_string("access_token", oauth2.access_token)

local fac = chilkat.FileAccess.new()
fac:write_entire_text_file(tokenFilePath, json:emit(), "utf-8", false)

print("Access Token Refreshed!")