Po kilku godzinnych bojach udało mi się dojść do części działającego projektu. Oczywiście kilka kwestii jest do dociągnięcia i być może w swoim czasie doczekają się ulepszenia. Testowane na windows i xampp.
Pobieramy composera dla windowsa, instalujemy i tworzymy w folderze naszego projektu plik composer.json np. za pomocą notepada. Pamiętajmy że plik ma mieć rozszerzenie .json, a nie .txt.
Następnie wpisujemy/wklejamy tam takie coś:
{
"require": {
"facebook/php-sdk-v4" : "4.0.*"
}
}
Dzięki temu będziemy mogli pobrać i zainstalować nasze facebookowe SDK v4. Zapisujemy i instalujemy. Jak? poprzez konsole albo p.p.myszy na pliku composer.json i wybieramy composer install( o ile przy instalacji wybraliśmy opcję że będą się nam pokazywać opcje composera w oknie kontekstowym).
Czekamy aż biblioteka zostanie zainstalowana.
Teraz musimy utworzyć w naszej aplikacji w folderze /application/libraries/. Plik o nazwie Facebook.php, o poniższej treści:
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
if (session_status() == PHP_SESSION_NONE) { session_start();}
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */
use Facebook\FacebookSession;use Facebook\FacebookRequest;use Facebook\GraphUser;use Facebook\FacebookRequestException;use Facebook\FacebookRedirectLoginHelper;
/** * Description of Facebook * * @author Radomiej */class Facebook {
var $ci; var $helper; var $session; var $permissions;
public function __construct() { $this->ci = & get_instance(); $this->permissions = $this->ci->config->item('permissions', 'facebook');
// Initialize the SDK FacebookSession::setDefaultApplication($this->ci->config->item('api_id', 'facebook'), $this->ci->config->item('app_secret', 'facebook'));
// Create the login helper and replace REDIRECT_URI with your URL // Use the same domain you set for the apps 'App Domains' // e.g. $helper = new FacebookRedirectLoginHelper( 'http://mydomain.com/redirect' ); $this->helper = new FacebookRedirectLoginHelper($this->ci->config->item('redirect_url', 'facebook'));
if ($this->ci->session->userdata('fb_token')) { $this->session = new FacebookSession($this->ci->session->userdata('fb_token'));
// Validate the access_token to make sure it's still valid try { if (!$this->session->validate()) { $this->session = null; } } catch (Exception $e) { // Catch any exceptions $this->session = null; } } else { // No session exists try { $this->session = $this->helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (Exception $ex) { // When validation fails or other local issues } }
if ($this->session) { $this->ci->session->set_userdata('fb_token', $this->session->getToken());
$this->session = new FacebookSession($this->session->getToken()); } }
/** * Returns the login URL. */ public function login_url() { return $this->helper->getLoginUrl($this->permissions); }
/** * Returns the current user's info as an array. */ public function get_user() { if ($this->session) { /** * Retrieve User’s Profile Information */ // Graph API to request user data $request = ( new FacebookRequest($this->session, 'GET', '/me'))->execute();
// Get response as an array $user = $request->getGraphObject()->asArray();
return $user; } return false; }
}
Teraz została nam jeszcze sprawa dodania pewnej linijki odpowiedzialnej za ładowanie plików/klas php z biblioteki facebooka.W głównej gałęzi projektu szukamy pliku index.php odpalającego nasz projekt. Przed uruchomienie core/CodeIgniter.php dopisujemy taką linijkę:
include_once './vendor/autoload.php';
Zostało jeszcze dodanie w folderze application/config pliku konfiguracyjnego. Nazwiemy go facebook.php i wpiszemy w nim to:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['facebook']['api_id'] = 'API_ID';$config['facebook']['app_secret'] = 'API_KEY';$config['facebook']['redirect_url'] = 'http://nasza.strona/login';$config['facebook']['permissions'] = array( 'email', 'user_location', 'user_birthday');
I to wszystko od teraz możemy korzystać z naszej facebookowej biblioteki w najnowszej wersji.
Jak czas pozwoli to zaktualizuje wersję Facebook.php o nowe funkcję. Jeśli ktoś byłby zainteresowany proszę o komentarz.