Sample code for 30+ languages & platforms
SQL Server

Rabobank Refresh OAuth2 Access Token

See more OAuth2 Examples

Demonstrates how to refresh an expired Rabobank OAuth2 access token. (No interactive user interaction is required to refresh an access token.)

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 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.

    -- We previously obtained an access token and saved the JSON to a file using this example:
    -- Get Rabobank OAuth2 Access Token

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @json, 'LoadFile', @success OUT, 'qa_data/tokens/rabobank.json'
    IF @success <> 1
      BEGIN
        EXEC @hr = sp_OADestroy @json
        RETURN
      END

    -- {
    --   "token_type": "Bearer",
    --   "access_token": "AAIkYTU0ZWM ... sxE0KL0HHWw",
    --   "expires_in": 3600,
    --   "consented_on": 1584641121,
    --   "scope": "ais.balances.read ais.transactions.read-90days ais.transactions.read-history",
    --   "refresh_token": "AAJXXSdN ... Uiblz9ILkxNBlytRGA",
    --   "refresh_token_expires_in": 157784760,
    --   "expires_on": "1584644722"
    -- }

    -- Refresh the access token by sending a POST like this:
    -- 

    -- POST /oauth2/token
    -- Headers:
    --     Content-Type: application/x-www-form-urlencoded
    --     Authorization: Basic BASE64(CLIENT_ID + ":" + CLIENT_SECRET)
    -- 
    -- Body (x-www-form-urlencoded):
    --     grant_type: refresh_token
    --     refresh_token: REFRESH_TOKEN

    DECLARE @req int
    EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT

    EXEC sp_OAMethod @req, 'AddParam', NULL, 'grant_type', 'refresh_token'
    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'refresh_token'
    EXEC sp_OAMethod @req, 'AddParam', NULL, 'refresh_token', @sTmp0

    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT

    -- Causes the "Authorization: Basic BASE64(CLIENT_ID + ":" + CLIENT_SECRET)" header to be added..
    EXEC sp_OASetProperty @http, 'BasicAuth', 1
    EXEC sp_OASetProperty @http, 'Login', 'YOUR_APP_CLIENT_ID'
    EXEC sp_OASetProperty @http, 'Password', 'YOUR_APP_CLIENT_SECRET'

    EXEC sp_OASetProperty @req, 'HttpVerb', 'POST'
    EXEC sp_OASetProperty @req, 'ContentType', 'application/x-www-form-urlencoded'

    DECLARE @resp int
    EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT

    EXEC sp_OAMethod @http, 'HttpReq', @success OUT, 'https://api-sandbox.rabobank.nl/openapi/sandbox/oauth2/token', @req, @resp
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @req
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @resp
        RETURN
      END

    -- Load the JSON response.
    EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT
    EXEC sp_OAMethod @json, 'Load', @success OUT, @sTmp0
    EXEC sp_OASetProperty @json, 'EmitCompact', 0

    -- Show the JSON response.
    EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
    PRINT @sTmp0


    EXEC sp_OAGetProperty @resp, 'StatusCode', @iTmp0 OUT
    PRINT 'Response status code: ' + @iTmp0

    -- If the response status code is not 200, then it's an error.
    EXEC sp_OAGetProperty @resp, 'StatusCode', @iTmp0 OUT
    IF @iTmp0 <> 200
      BEGIN
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @req
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @resp
        RETURN
      END

    -- Save the refreshed access token JSON to a file for future requests.
    DECLARE @fac int
    EXEC @hr = sp_OACreate 'Chilkat.FileAccess', @fac OUT

    EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
    EXEC sp_OAMethod @fac, 'WriteEntireTextFile', @success OUT, 'qa_data/tokens/rabobank.json', @sTmp0, 'utf-8', 0

    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @req
    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @resp
    EXEC @hr = sp_OADestroy @fac


END
GO