Sample code for 30+ languages & platforms
PowerBuilder

Google Drive Refresh Access Token

See more Google Drive Examples

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

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Json
string ls_TokenFilePath
oleobject loo_Oauth2
oleobject loo_Fac

li_Success = 0

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

li_Success = 1

// 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"
// }

loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")
if li_rc < 0 then
    destroy loo_Json
    MessageBox("Error","Connecting to COM object failed")
    return
end if
ls_TokenFilePath = "qa_data/tokens/googleDrive.json"
loo_Json.LoadFile(ls_TokenFilePath)

loo_Oauth2 = create oleobject
li_rc = loo_Oauth2.ConnectToNewObject("Chilkat.OAuth2")

loo_Oauth2.AccessToken = loo_Json.StringOf("access_token")
loo_Oauth2.RefreshToken = loo_Json.StringOf("refresh_token")

loo_Oauth2.AuthorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth"
loo_Oauth2.TokenEndpoint = "https://www.googleapis.com/oauth2/v4/token"

//  Replace these with actual values.
loo_Oauth2.ClientId = "GOOGLE-CLIENT-ID"
loo_Oauth2.ClientSecret = "GOOGLE-CLIENT-SECRET"
loo_Oauth2.Scope = "https://www.googleapis.com/auth/drive"

// Use OAuth2 to refresh the access token.
li_Success = loo_Oauth2.RefreshAccessToken()
if li_Success <> 1 then
    Write-Debug loo_Oauth2.LastErrorText
    destroy loo_Json
    destroy loo_Oauth2
    return
end if

Write-Debug loo_Oauth2.AccessTokenResponse

// Save the new access token to our JSON file (so we can refresh it again when needed).
loo_Json.UpdateString("access_token",loo_Oauth2.AccessToken)

loo_Fac = create oleobject
li_rc = loo_Fac.ConnectToNewObject("Chilkat.FileAccess")

loo_Fac.WriteEntireTextFile(ls_TokenFilePath,loo_Json.Emit(),"utf-8",0)

Write-Debug "Access Token Refreshed!"


destroy loo_Json
destroy loo_Oauth2
destroy loo_Fac