• Topic
  • Discussion
  • ODS.FacebookAPI(1.1) -- DAVWikiAdmin? , 2017-06-13 06:01:07 Edit WebDAV System Administrator 2017-06-13 06:01:07

    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

    • The DB.DBA.Facebook type consists of a main object containing all the properties (api_key, api_secret) required to establish a connection to Facebook and user that is currently logged in to Facebook.
    • The Facebook user has no interaction with (api_key, api_secret). The developer must set api_key and api_secret. Essential part of the UDT is its property named "api_client" —
      • This property is of type DB.DBA.FacebookRestClient, also made available after execution of facebook.sql.
      • This property is the real REST client that takes care of authentication and communication to Facebook.

    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