Sample code for 30+ languages & platforms
SQL Server

Read a Single Facebook Post

See more Facebook Examples

Demonstrates how to read the contents of a single Facebook post. A post is an individual entry in a profile's feed. The profile could be a user, page, app, or group.

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
    DECLARE @iTmp1 int
    DECLARE @iTmp2 int
    DECLARE @iTmp3 int
    DECLARE @iTmp4 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.

    -- This example assumes a previously obtained an access token
    DECLARE @oauth2 int
    EXEC @hr = sp_OACreate 'Chilkat.OAuth2', @oauth2 OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OASetProperty @oauth2, 'AccessToken', 'FACEBOOK-ACCESS-TOKEN'

    DECLARE @rest int
    EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT

    -- Connect to Facebook...
    EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'graph.facebook.com', 443, 1, 1
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @oauth2
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END

    -- Provide the authentication credentials (i.e. the access key)
    EXEC sp_OAMethod @rest, 'SetAuthOAuth2', @success OUT, @oauth2

    -- This example assumes a post id was already retrieved.
    -- For example, it could've been retrieved by reading the user's feed:
    -- See Parsing the Facebook User Feed for code showing how to parse the JSON feed content.

    DECLARE @postId nvarchar(4000)
    SELECT @postId = '10224048320139890_10210156138515282'

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

    EXEC sp_OAMethod @sbPath, 'Append', @success OUT, '/v2.7/'
    EXEC sp_OAMethod @sbPath, 'Append', @success OUT, @postId

    -- Select the fields we want.
    -- This example will select almost all the possible fields.
    -- See https://developers.facebook.com/docs/graph-api/reference/post/
    EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'fields', 'id,message,created_time,caption,description,from,link,name,object_id,picture,place,privacy,properties,shares,source,status_type,story,targeting,to,type,updated_time,with_tags'

    DECLARE @responseJson nvarchar(4000)
    EXEC sp_OAMethod @sbPath, 'GetAsString', @sTmp0 OUT
    EXEC sp_OAMethod @rest, 'FullRequestNoBody', @responseJson OUT, 'GET', @sTmp0
    EXEC sp_OAGetProperty @rest, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 = 0
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @oauth2
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @sbPath
        RETURN
      END

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

    EXEC sp_OASetProperty @json, 'EmitCompact', 0
    EXEC sp_OAMethod @json, 'Load', @success OUT, @responseJson

    -- Show the JSON in human-readable format.
    EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    -- A sample JSON response is shown here.  
    -- { 
    --   "id": "12345678901234567_12345678900000004",
    --   "message": "Ignore my posts -- I'm doing some testing for Facebook related programming...",
    --   "created_time": "2016-09-29T20:46:18+0000",
    --   "from": { 
    --     "name": "John Doe",
    --     "id": "12345678901234567"
    --   },
    --   "link": "https:\/\/www.facebook.com\/photo.php?fbid=10210199026247451&set=a.1237223526054.2038240.1094202869&type=3",
    --   "object_id": "10210139026347451",
    --   "picture": "https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/14462791_10210199026647451_7830642117574407060_n.jpg?oh=a7f9ed10ce9cd81a82adeb541c60e2e2&oe=58ABB195",
    --   "privacy": { 
    --     "allow": "",
    --     "deny": "",
    --     "description": "Public",
    --     "friends": "",
    --     "value": "EVERYONE"
    --   },
    --   "status_type": "added_photos",
    --   "type": "photo",
    --   "updated_time": "2016-09-29T20:46:18+0000"
    -- }

    -- This is the code to parse some fields in the JSON response.

    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'type'
    PRINT 'type: ' + @sTmp0

    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'message'
    PRINT 'message: ' + @sTmp0

    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'id'
    PRINT 'id: ' + @sTmp0

    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'link'
    PRINT 'link: ' + @sTmp0

    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'privacy.description'
    PRINT 'privacy descripton: ' + @sTmp0

    DECLARE @dtime int
    EXEC @hr = sp_OACreate 'Chilkat.CkDateTime', @dtime OUT

    DECLARE @bLocalTime int
    SELECT @bLocalTime = 1
    EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'created_time'
    EXEC sp_OAMethod @dtime, 'SetFromTimestamp', @success OUT, @sTmp0
    DECLARE @dt int
    EXEC @hr = sp_OACreate 'Chilkat.DtObj', @dt OUT

    EXEC sp_OAMethod @dtime, 'ToDtObj', NULL, @bLocalTime, @dt

    EXEC sp_OAGetProperty @dt, 'Month', @iTmp0 OUT

    EXEC sp_OAGetProperty @dt, 'Day', @iTmp1 OUT

    EXEC sp_OAGetProperty @dt, 'Year', @iTmp2 OUT

    EXEC sp_OAGetProperty @dt, 'Hour', @iTmp3 OUT

    EXEC sp_OAGetProperty @dt, 'Minute', @iTmp4 OUT
    PRINT @iTmp0 + '/' + @iTmp1 + '/' + @iTmp2 + '  ' + @iTmp3 + ':' + @iTmp4

    EXEC @hr = sp_OADestroy @oauth2
    EXEC @hr = sp_OADestroy @rest
    EXEC @hr = sp_OADestroy @sbPath
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @dtime
    EXEC @hr = sp_OADestroy @dt


END
GO