The Facebook Client API as a User Defined Type (UDT)

What is the Facebook Client API?

The Facebook Client API gives developers an easy way to communicate with Facebook, handling authentication with transparent communication. It may be used with any VSP or VSPX page, including but not limited to ODS.

How do I use the Facebook Client API?

To get access to the the Facebook Client API, you should execute the facebook.sql script through iSQL.

Note: Be sure to upgrade to the latest version of the ods_framework_dav.vad package, to get the latest versions of all files.

What is the expected result?

After execution of the SQL file, a type with name "DB.DBA.Facebook" will be created. Creating an object of this type with the correct parameter(s) will set up a functional REST client for Facebook.

Description of usage

Examples


DECLARE  appapikey, appsecret   VARCHAR;
DECLARE  _facebook              DB.DBA.Facebook;
DECLARE  _user                  INTEGER;

-- here you should put the 32-character API key that corresponds to 
-- the application you have created in Facebook.
appapikey := '5568c178ad6a4cef74da4848b164602c'; 

-- here you should put the 32-character API secret that corresponds 
-- to the application you have created in Facebook.
appsecret := 'f35a624a0c9d153a6fa712a439bea14b'; 

_facebook := new Facebook(appapikey, appsecret, params, lines);

-- Constructor method for the UDT should contain 4 obligatory parameters -  
-- API key, API secret, params, and lines parameters available in VSP

-- With this action the API is set up.

-- To work with Facebook data, we must make the Facebook user login

_user := _facebook.require_login();

-- after successful login, _user is INTEGER that contains Facebook user ID.

-- All further communication to Facebook is related to api_client property:

-- for example if we want to take full name of current user:

DECLARE _xmle ANY;

_xmle := _facebook.api_client.users_getInfo(CAST(_user AS VARCHAR),'name');

-- Here we CAST _user as VARCHAR, as the first parameter is comma-separated  
-- list of the users IDs for which we need the field "name". On successful  
-- execution, _xmle will contain xml entity with the result. We should 
-- parse it in order to get what we need from result. For example, if we 
-- need name as VARCHAR we can perform the following:

DECLARE  _uname  VARCHAR;
_uname := 
  CAST ( xpath_eval ( '/users_getInfo_response/user/name', 
                      _res
                    ) AS VARCHAR
       );

   METHOD auth_getSession
      (
        auth_token    ANY 
      ) 
      RETURNS         ANY,
   METHOD users_getInfo
      (
        uids          ANY, 
        fields        ANY 
      ) 
      RETURNS         ANY,
   METHOD users_isAppAdded
      () 
      RETURNS         ANY,
   METHOD friends_areFriends
      (
        uids1         ANY, 
        uids2         ANY 
      ) 
      RETURNS         ANY,
   METHOD friends_get
      () 
      RETURNS         ANY,
   METHOD events_get
      (
        uid           INTEGER, 
        eids          ANY,
        start_time    INTEGER,
        end_time      INTEGER,
        rsvp_status   VARCHAR 
      ) 
      RETURNS         ANY,
   METHOD events_get
      (
        uid           INTEGER 
      ) 
      RETURNS         ANY,
   METHOD events_getMembers
      (
        eid           INTEGER 
      ) 
      RETURNS         ANY,
   METHOD fql_query
      (
        _query        VARCHAR 
      ) 
      RETURNS         ANY,
   METHOD feed_publishStoryToUser
      (
        title         VARCHAR,
        body          VARCHAR,
        image_1       VARCHAR,
        image_1_link  VARCHAR,
        image_2       VARCHAR,
        image_2_link  VARCHAR,
        image_3       VARCHAR,
        image_3_link  VARCHAR,
        image_4       VARCHAR,
        image_4_link  VARCHAR,
        priority      INTEGER 
      ) 
      RETURNS         ANY,
   METHOD feed_publishStoryToUser
      (
        title         VARCHAR,
        body          VARCHAR
      ) 
      RETURNS         ANY,
   METHOD feed_publishActionOfUser
      (
        title         VARCHAR,
        body          VARCHAR,
        image_1       VARCHAR,
        image_1_link  VARCHAR,
        image_2       VARCHAR,
        image_2_link  VARCHAR,
        image_3       VARCHAR,
        image_3_link  VARCHAR,
        image_4       VARCHAR,
        image_4_link  VARCHAR,
        priority      INTEGER
      ) 
      RETURNS         ANY,
   METHOD feed_publishActionOfUser
      (
        title         VARCHAR,
        body          VARCHAR 
      ) 
      RETURNS         ANY,
   METHOD friends_getAppUsers
      () 
      RETURNS         ANY,
   METHOD groups_get
      (
        uid           INTEGER, 
        gids          ANY
      ) 
      RETURNS         ANY,
   METHOD groups_getMembers
      (
        gid           INTEGER 
      ) 
      RETURNS         ANY,
   METHOD notifications_get
      () 
      RETURNS         ANY,
   METHOD notifications_send
      (
        to_ids        ANY,
        notification  VARCHAR,
        email         VARCHAR
      ) 
      RETURNS         ANY,
   METHOD notifications_sendRequest
      (
        to_ids        ANY,
        type          VARCHAR,
        content       VARCHAR,
        image         VARCHAR,
        invite        INTEGER
      ) 
      RETURNS         ANY,
   METHOD photos_get
      (
        subj_id       INTEGER,
        aid           INTEGER,
        pids          ANY
      ) 
      RETURNS         ANY,
   METHOD photos_getAlbums
      (
        uid           INTEGER,
        aids          INTEGER
      ) 
      RETURNS         ANY,
   METHOD photos_getTags
      (
        pids          ANY 
      ) 
      RETURNS         ANY,
   METHOD profile_setFBML
      (
        markup        VARCHAR,
        uid           INTEGER
      ) 
      RETURNS         ANY,
   METHOD profile_getFBML
      (
        uid           INTEGER 
      ) 
      RETURNS         ANY,
   METHOD fbml_refreshImgSrc
      (
        _url          VARCHAR
      ) 
      RETURNS         ANY,
   METHOD fbml_refreshRefUrl
      (
        _url          VARCHAR
      ) 
      RETURNS         ANY,
   METHOD fbml_setRefHandle
      (
        _handle       VARCHAR,
        fbml          VARCHAR 
      ) 
      RETURNS         ANY

-- You can find a description for each method at the beginning of the  
-- method definition in facebook.sql or in 
-- http://wiki.developers.facebook.com/index.php/API

-- there are 3 methods that are related to REST communication but not 
-- to API function.
   METHOD generate_sig
      (
        params_array ANY, 
        secret VARCHAR
      ) 
      RETURNS VARCHAR,
   METHOD call_method
      (
        method VARCHAR,
        params ANY
      ) 
      RETURNS ANY,
   METHOD post_request
      (
        method VARCHAR,
        params ANY
      ) 
      RETURNS ANY,

-- all functions return XML entity as result, except 
-- auth_getSession(), 
-- users_getInfo(uids ANY, fields ANY), and 
-- users_isAppAdded()

Related

CategoryODS CategoryOpenSource CategoryVirtuoso CategoryHowTo