library/Custom/Facebook.php
(Zwraca błąd w 30 linijce $_instance = new Facebook...;
<?php
require_once 'Facebook/facebook.php';
class Custom_Facebook {
protected static $_instance = null;
public static $_scope = 'read_stream, email';
/**
*
* @return \Facebook
* @throws Exception
*/
public static function getInstance() {
if(self::$_instance!=null){
return self::$_instance;
}
$opt = Zend_Registry::getInstance()->get('options');
$opt = $opt['facebook'];
$appId = $opt['appId'];
if (!$appId) {
throw new Exception("You must set facebook appId in application.ini (add key: facebook.appIni)");
}
$secret = $opt['secret'];
if (!$secret) {
throw new Exception("You must set facebook secret in application.ini (add key: facebook.secret)");
}
$_instance = new Facebook(array('appId' => $appId, 'secret' => $secret));
return $_instance;
}
/**
*
* @return String
* @throws Exception
*/
public static function getLoginLink($baseUrl) {
$facebook = self::getInstance();
$params = array(
'scope' => self::$_scope,
'redirect_uri' => $baseUrl
);
return $facebook->getLoginUrl($params);
}
}
library/facebook/facebook.php
(pliki sdk facebooka)
<?php
/**
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
require_once dirname(__FILE__)."/base_facebook.php";
/**
* Extends the BaseFacebook class with the intent of using
* PHP sessions to store user ids and access tokens.
*/
class Facebook extends BaseFacebook
{
/**
* Identical to the parent constructor, except that
* we start a PHP session to store the user ID and
* access token if during the course of execution
* we discover them.
*
* @param Array $config the application configuration.
* @see BaseFacebook::__construct in facebook.php
*/
public function __construct($config) {
if (!session_id()) {
session_start();
}
parent::__construct($config);
}
protected static $kSupportedKeys =
array('state', 'code', 'access_token', 'user_id');
/**
* Provides the implementations of the inherited abstract
* methods. The implementation uses PHP sessions to maintain
* a store for authorization codes, user ids, CSRF states, and
* access tokens.
*/
protected function setPersistentData($key, $value) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to setPersistentData.');
return;
}
$session_var_name = $this->constructSessionVariableName($key);
$_SESSION[$session_var_name] = $value;
}
protected function getPersistentData($key, $default = false) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to getPersistentData.');
return $default;
}
$session_var_name = $this->constructSessionVariableName($key);
return isset($_SESSION[$session_var_name]) ?
$_SESSION[$session_var_name] : $default;
}
protected function clearPersistentData($key) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to clearPersistentData.');
return;
}
$session_var_name = $this->constructSessionVariableName($key);
unset($_SESSION[$session_var_name]);
}
protected function clearAllPersistentData() {
foreach (self::$kSupportedKeys as $key) {
$this->clearPersistentData($key);
}
}
protected function constructSessionVariableName($key) {
return implode('_', array('fb',
$this->getAppId(),
$key));
}
}
Lokalnie wszystko działa świetnie, wygląda że require dołącza pliki prawidłowo bo gdy ustawię na inną ścieżkę wywala błąd wcześniej :/ Próbowałem zmieniać nazwy klasy dodawać 'dirname(FILE)' przed ścieżką do klasy... nistety jeszcze nie mam pomysłu co jeszcze może być nie tak :/