Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) ETrade OAuth1 Authorization (3-legged) Step 2Demonstrates the final step in 3-legged OAuth1 authorization for the ETrade REST API. Example uses the OAuth1 verifier code that was copy-and-pasted from the browser in the 1st step. The end result of this final OAuth1 step is an access token that can be used to make ETrade REST API calls. See https://apisb.etrade.com/docs/api/authorization/get_access_token.html
-- 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) -- This requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @consumerKey nvarchar(4000) SELECT @consumerKey = 'ETRADE_CONSUMER_KEY' DECLARE @consumerSecret nvarchar(4000) SELECT @consumerSecret = 'ETRADE_CONSUMER_SECRET' DECLARE @requestTokenUrl nvarchar(4000) SELECT @requestTokenUrl = 'https://apisb.etrade.com/oauth/request_token' DECLARE @authorizeUrl nvarchar(4000) SELECT @authorizeUrl = 'https://us.etrade.com/e/t/etws/authorize' DECLARE @accessTokenUrl nvarchar(4000) SELECT @accessTokenUrl = 'https://apisb.etrade.com/oauth/access_token' DECLARE @http int -- Use "Chilkat_9_5_0.Http" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int SELECT @success = 1 EXEC sp_OASetProperty @http, 'OAuth1', 1 EXEC sp_OASetProperty @http, 'OAuthConsumerKey', @consumerKey EXEC sp_OASetProperty @http, 'OAuthConsumerSecret', @consumerSecret EXEC sp_OASetProperty @http, 'OAuthCallback', 'oob' DECLARE @jsonRequestToken int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonRequestToken OUT EXEC sp_OAMethod @jsonRequestToken, 'LoadFile', @success OUT, 'qa_data/tokens/etrade_request_token.json' DECLARE @requestToken nvarchar(4000) EXEC sp_OAMethod @jsonRequestToken, 'StringOf', @requestToken OUT, 'oauth_token' DECLARE @requestTokenSecret nvarchar(4000) EXEC sp_OAMethod @jsonRequestToken, 'StringOf', @requestTokenSecret OUT, 'oauth_token_secret' -- ------------------------------------------------------------------------------ -- Exchange the OAuth Request Token for an OAuth Access Token. EXEC sp_OASetProperty @http, 'OAuthToken', @requestToken EXEC sp_OASetProperty @http, 'OAuthTokenSecret', @requestTokenSecret -- This is the verifier that was interactively copy-and-pasted from the browser back to our app. EXEC sp_OASetProperty @http, 'OAuthVerifier', 'NJ07S' DECLARE @resp int EXEC sp_OAMethod @http, 'QuickGetObj', @resp OUT, @accessTokenUrl EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @jsonRequestToken RETURN END -- Make sure a successful response was received. EXEC sp_OAGetProperty @resp, 'StatusCode', @iTmp0 OUT IF @iTmp0 <> 200 BEGIN EXEC sp_OAGetProperty @resp, 'StatusLine', @sTmp0 OUT PRINT @sTmp0 EXEC sp_OAGetProperty @resp, 'Header', @sTmp0 OUT PRINT @sTmp0 EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @jsonRequestToken RETURN END -- If successful, the resp.BodyStr contains something like this: -- oauth_token=85123455-fF41296Bi3daM8eCo9Y5vZabcdxXpRv864plYPOjr&oauth_token_secret=afiYJOgabcdSfGae7BDvJVVTwys8fUGpra5guZxbmFBZo EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT PRINT @sTmp0 DECLARE @hashTab int -- Use "Chilkat_9_5_0.Hashtable" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Hashtable', @hashTab OUT EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT EXEC sp_OAMethod @hashTab, 'AddQueryParams', @success OUT, @sTmp0 DECLARE @accessToken nvarchar(4000) EXEC sp_OAMethod @hashTab, 'LookupStr', @accessToken OUT, 'oauth_token' DECLARE @accessTokenSecret nvarchar(4000) EXEC sp_OAMethod @hashTab, 'LookupStr', @accessTokenSecret OUT, 'oauth_token_secret' EXEC @hr = sp_OADestroy @resp -- The access token + secret is what should be saved and used for -- subsequent REST API calls. PRINT 'Access Token = ' + @accessToken PRINT 'Access Token Secret = ' + @accessTokenSecret -- Save this access token for future calls. -- Just in case we need user_id and screen_name, save those also.. DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT EXEC sp_OAMethod @json, 'AppendString', @success OUT, 'oauth_token', @accessToken EXEC sp_OAMethod @json, 'AppendString', @success OUT, 'oauth_token_secret', @accessTokenSecret DECLARE @fac int -- Use "Chilkat_9_5_0.FileAccess" for versions of Chilkat < 10.0.0 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/etrade.json', @sTmp0, 'utf-8', 0 PRINT 'Success.' EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @jsonRequestToken EXEC @hr = sp_OADestroy @hashTab EXEC @hr = sp_OADestroy @json EXEC @hr = sp_OADestroy @fac END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.