Sample code for 30+ languages & platforms
SQL Server

SugarCRM Authenticate

See more SugarCRM Examples

Demonstrates how to authenticate to the SugarCRM REST v10 API. This is how an OAuth2 access token is obtained.

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

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

    EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'your.site.domain', 443, 1, 1
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END

    EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Cache-Control', 'no-cache'

    -- The following code creates the JSON request body.
    -- The JSON created by this code is shown below.
    DECLARE @jsonReq int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonReq OUT

    EXEC sp_OAMethod @jsonReq, 'UpdateString', @success OUT, 'grant_type', 'password'
    EXEC sp_OAMethod @jsonReq, 'UpdateString', @success OUT, 'client_id', 'sugar'
    EXEC sp_OAMethod @jsonReq, 'UpdateString', @success OUT, 'client_secret', 'CLIENT_SECRET'
    EXEC sp_OAMethod @jsonReq, 'UpdateString', @success OUT, 'username', 'admin'
    EXEC sp_OAMethod @jsonReq, 'UpdateString', @success OUT, 'password', 'password'
    EXEC sp_OAMethod @jsonReq, 'UpdateString', @success OUT, 'platform', 'custom_api'

    -- The JSON request body created by the above code:

    -- {
    --   "grant_type": "password",
    --   "client_id": "sugar",
    --   "client_secret": "CLIENT_SECRET",
    --   "username": "admin",
    --   "password": "password",
    --   "platform": "custom_api"
    -- }

    DECLARE @sbReq int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbReq OUT

    EXEC sp_OAMethod @jsonReq, 'EmitSb', @success OUT, @sbReq

    EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Type', 'application/json'

    DECLARE @sbJson int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbJson OUT

    EXEC sp_OAMethod @rest, 'FullRequestSb', @success OUT, 'POST', '/rest/v10/oauth2/token', @sbReq, @sbJson
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @jsonReq
        EXEC @hr = sp_OADestroy @sbReq
        EXEC @hr = sp_OADestroy @sbJson
        RETURN
      END

    EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
    IF @iTmp0 <> 200
      BEGIN

        EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
        PRINT 'Received error response code: ' + @iTmp0

        PRINT 'Response body:'
        EXEC sp_OAMethod @sbJson, 'GetAsString', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @jsonReq
        EXEC @hr = sp_OADestroy @sbReq
        EXEC @hr = sp_OADestroy @sbJson
        RETURN
      END

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'LoadSb', @success OUT, @sbJson

    -- The following code parses the JSON response.
    -- A sample JSON response is shown below the sample code.
    DECLARE @access_token nvarchar(4000)

    DECLARE @expires_in int

    DECLARE @token_type nvarchar(4000)

    DECLARE @scope int

    DECLARE @refresh_token nvarchar(4000)

    DECLARE @refresh_expires_in int

    DECLARE @download_token nvarchar(4000)

    EXEC sp_OAMethod @json, 'StringOf', @access_token OUT, 'access_token'
    EXEC sp_OAMethod @json, 'IntOf', @expires_in OUT, 'expires_in'
    EXEC sp_OAMethod @json, 'StringOf', @token_type OUT, 'token_type'
    EXEC sp_OAMethod @json, 'IsNullOf', @scope OUT, 'scope'
    EXEC sp_OAMethod @json, 'StringOf', @refresh_token OUT, 'refresh_token'
    EXEC sp_OAMethod @json, 'IntOf', @refresh_expires_in OUT, 'refresh_expires_in'
    EXEC sp_OAMethod @json, 'StringOf', @download_token OUT, 'download_token'

    -- A sample JSON response body that is parsed by the above code:

    -- {
    --   "access_token": "c6d495c9-bb25-81d2-5f81-533ef6479f9b",
    --   "expires_in": 3600,
    --   "token_type": "bearer",
    --   "scope": null,
    --   "refresh_token": "cbc40e67-12bc-4b56-a1d9-533ef62f2601",
    --   "refresh_expires_in": 1209600,
    --   "download_token": "cc5d1a9f-6627-3349-96e5-533ef6b1a493"
    -- }


    PRINT 'Example Completed.'

    EXEC @hr = sp_OADestroy @rest
    EXEC @hr = sp_OADestroy @jsonReq
    EXEC @hr = sp_OADestroy @sbReq
    EXEC @hr = sp_OADestroy @sbJson
    EXEC @hr = sp_OADestroy @json


END
GO