miniblog

Unnamed repository; edit this file 'description' to name the repository.
git clone http://git.code.weiherhei.de/miniblog.git
Log | Files | Refs

facebook.php (2891B)


      1 <?php
      2 /**
      3  * Copyright 2011 Facebook, Inc.
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License"); you may
      6  * not use this file except in compliance with the License. You may obtain
      7  * a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     13  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     14  * License for the specific language governing permissions and limitations
     15  * under the License.
     16  */
     17 
     18 require_once "base_facebook.php";
     19 
     20 /**
     21  * Extends the BaseFacebook class with the intent of using
     22  * PHP sessions to store user ids and access tokens.
     23  */
     24 class FacebookApi extends BaseFacebook
     25 {
     26   /**
     27    * Identical to the parent constructor, except that
     28    * we start a PHP session to store the user ID and
     29    * access token if during the course of execution
     30    * we discover them.
     31    *
     32    * @param Array $config the application configuration.
     33    * @see BaseFacebook::__construct in facebook.php
     34    */
     35   public function __construct($config) {
     36     if (!session_id()) {
     37       //session_start();
     38     }
     39     parent::__construct($config);
     40   }
     41 
     42   protected static $kSupportedKeys =
     43     array('state', 'code', 'access_token', 'user_id');
     44 
     45   /**
     46    * Provides the implementations of the inherited abstract
     47    * methods.  The implementation uses PHP sessions to maintain
     48    * a store for authorization codes, user ids, CSRF states, and
     49    * access tokens.
     50    */
     51   protected function setPersistentData($key, $value) {
     52     if (!in_array($key, self::$kSupportedKeys)) {
     53       self::errorLog('Unsupported key passed to setPersistentData.');
     54       return;
     55     }
     56 
     57     $session_var_name = $this->constructSessionVariableName($key);
     58     $_SESSION[$session_var_name] = $value;
     59   }
     60 
     61   protected function getPersistentData($key, $default = false) {
     62     if (!in_array($key, self::$kSupportedKeys)) {
     63       self::errorLog('Unsupported key passed to getPersistentData.');
     64       return $default;
     65     }
     66 
     67     $session_var_name = $this->constructSessionVariableName($key);
     68     return isset($_SESSION[$session_var_name]) ?
     69       $_SESSION[$session_var_name] : $default;
     70   }
     71 
     72   protected function clearPersistentData($key) {
     73     if (!in_array($key, self::$kSupportedKeys)) {
     74       self::errorLog('Unsupported key passed to clearPersistentData.');
     75       return;
     76     }
     77 
     78     $session_var_name = $this->constructSessionVariableName($key);
     79     unset($_SESSION[$session_var_name]);
     80   }
     81 
     82   protected function clearAllPersistentData() {
     83     foreach (self::$kSupportedKeys as $key) {
     84       $this->clearPersistentData($key);
     85     }
     86   }
     87 
     88   protected function constructSessionVariableName($key) {
     89     return implode('_', array('fb',
     90                               $this->getAppId(),
     91                               $key));
     92   }
     93 }