![]()  | 
  
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
 
      (SQL Server) Refresh Schwab OAuth2 Access TokenSee more Schwab ExamplesDemonstrates how to refresh a Schwab OAuth2 access token.
 -- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) DECLARE @success int SELECT @success = 0 -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. -- See Get Schwab OAuth2 Access Token -- for sample code showing how to obtain a Schwab access token for desktop apps. -- This example assumes we previously obtained an OAuth2 access token for Schwab. DECLARE @jsonToken int EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonToken OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END EXEC sp_OAMethod @jsonToken, 'LoadFile', @success OUT, 'qa_data/tokens/schwab-access-token.json' IF @success <> 1 BEGIN PRINT 'Failed to load schwab-access-token.json' EXEC @hr = sp_OADestroy @jsonToken RETURN END -- The access token JSON looks something like this: -- { -- "expires_in": 3600, -- "x_refresh_token_expires_in": 8726400, -- "refresh_token": "L011546037639r ... 3vR2DrbOmg0Sdagw", -- "access_token": "eyJlbmMiOiJBMTI4Q0 ... oETJEMbeggg", -- "token_type": "bearer" -- } DECLARE @oauth2 int EXEC @hr = sp_OACreate 'Chilkat.OAuth2', @oauth2 OUT EXEC sp_OASetProperty @oauth2, 'TokenEndpoint', 'https://api.schwabapi.com/v1/oauth/token' -- Replace these with actual values. EXEC sp_OASetProperty @oauth2, 'ClientId', 'APP_KEY' EXEC sp_OASetProperty @oauth2, 'ClientSecret', 'APP_SECRET' EXEC sp_OASetProperty @oauth2, 'UseBasicAuth', 1 -- Get the "refresh_token" EXEC sp_OAMethod @jsonToken, 'StringOf', @sTmp0 OUT, 'refresh_token' EXEC sp_OASetProperty @oauth2, 'RefreshToken', @sTmp0 -- Send the HTTP POST to refresh the access token.. EXEC sp_OAMethod @oauth2, 'RefreshAccessToken', @success OUT IF @success = 0 BEGIN EXEC sp_OAGetProperty @oauth2, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @jsonToken EXEC @hr = sp_OADestroy @oauth2 RETURN END -- The response contains a new access token, but we must keep -- our existing refresh token for when we need to refresh again in the future. EXEC sp_OAGetProperty @oauth2, 'AccessToken', @sTmp0 OUT EXEC sp_OAMethod @jsonToken, 'UpdateString', @success OUT, 'access_token', @sTmp0 -- Save the new JSON access token response to a file. -- The access + refresh tokens contained in this JSON will be needed for the next refresh. DECLARE @sbJson int EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbJson OUT EXEC sp_OASetProperty @jsonToken, 'EmitCompact', 0 EXEC sp_OAMethod @jsonToken, 'EmitSb', @success OUT, @sbJson EXEC sp_OAMethod @sbJson, 'WriteFile', @success OUT, 'qa_data/tokens/schwab-access-token.json', 'utf-8', 0 PRINT 'OAuth2 token refreshed!' EXEC sp_OAGetProperty @oauth2, 'AccessToken', @sTmp0 OUT PRINT 'New Access Token = ' + @sTmp0 EXEC @hr = sp_OADestroy @jsonToken EXEC @hr = sp_OADestroy @oauth2 EXEC @hr = sp_OADestroy @sbJson END GO  | 
  ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.