new Horde_Http_Client(), 'http_request' => new Horde_Controller_Request_Http()); /** Create the facebook object **/ $facebook = new Horde_Service_Facebook($apikey, $secret, $context); /** * Authenticating and logging into a Facebook app from an external site is * a complicated and multi-stage process. For these examples, we are assuming * that we have authenticated the application and are either already logged into * Facebook or we have authorized 'offline_access'. */ /** * If we have a valid cookie, this will know about it. This method should also * be called both after the user has authorized the application and again after * the user has (optionally) authorized infinite sessions (offline_access). Then * you would obtain the infinite session_key by calling auth->getSessionKey() and * storing the results as you will not be able to retrieve it from FB again. * This is the *only* way to obtain the session key. */ //$facebook->auth->validateSession(); // Current uid can be obtained with: //$uid = $facebook->auth->getUser(); /** session_key, if you need it, can be obtained via: **/ //$sid = $facebook->auth->getSessionKey(); /** * Otherwise, you would use uid and session_key from prefs or other local * storage and set up the session by calling setUser(). This is how you would * need to do this when utilizing an infinite session_key, since FB will only * send the infinite session_key to you one time only - it's up to client code * to store it. */ $fbp = unserialize($prefs->getValue('facebook')); $uid = $fbp['uid']; $sid = $fbp['sid']; $facebook->auth->setUser($uid, $sid, 0); /** Use a FQL query to get some friend info **/ $result = $facebook->fql->run('SELECT name, status FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ' . $uid . ')'); var_dump($result); /** Similar can be done as so using individual api calls...but takes a *long* time **/ //$friends = $facebook->friends_get(); // foreach ($friends as $friend) { // $personArray = $facebook->users_getInfo($friend, 'name'); // $person[] = $personArray[0]; // } // // foreach ($person as $f) { // echo ' ' . $f['name'] . '
'; // } /** Calling code that requires extended permissions **/ //try { // // Set your Facebook status (requires 'status_update' extended perm) // $facebook->users->setStatus('is testing my Horde_Service_Facebook client library code...again.'); //} catch (Horde_Service_Facebook_Exception $e) { // // Check that we failed because of insufficient app permissions. // // then redirect if needed... // if ($e->getCode() == Horde_Service_Facebook_ErrorCodes::API_EC_PERMISSION_STATUS_UPDATE) { // // Don't have status_update...tell user/provide link to authorize page etc... // You can get the link to the authorize page like this: // $facebook->auth->getExtendedPermUrl( // Horde_Service_Facebook_Auth::EXTEND_PERMS_STATUSUPDATE, // 'http://yourcallbackurl.com'); // } else { // // Something else // echo $e->getMessage(); // } //} /** * Alternatively, you could check for the necessary perms first, but IMO, it's * more effecient to get the error since checking the perms and then performing * the action require two round trips to the server. */ //$hasPerm = $facebook->users->hasAppPermissions('status_update'); //if ($hasPerm) { // //..... //} /** * Batch mode. * When calling in batch mode, you must assign the results of the method calls * as a reference so when run() is called, you still have a handle to the * results. */ //$facebook->batchBegin(); //$notifications = &$facebook->notifications->get(); //$friends = &$facebook->friends->get(); //$facebook->batchEnd(); //var_dump($friends); //var_dump($notifications); /** * View a user's pictures. $uid should be the user id whose albums you want to * retrieve. (Permissions permitting, of course) */ //$albums = $facebook->photos->getAlbums($uid); //var_dump($albums); //$images = $facebook->photos->get('', $albums[0]['aid']); //var_dump($images); /** * Request the raw JSON (or XML) data */ //$facebook->dataFormat = Horde_Service_Facebook::DATA_FORMAT_JSON; //$results = $facebook->photos->getAlbums($uid); //var_dump($results); /** * Upload a photo */ $path = "/Users/mrubinsk/Desktop/horde_fb.jpg"; $results = $facebook->photos->upload($path); var_dump($results);