$ cd /path/ci_proj/application/libraries
$ git clone https://github.com/facebook/facebook-php-sdk-v4.git
$ ln -s facebook-php-sdk-v4 facebook
建立 Facebook 相關 config:
$ vim /path/ci_proj/application/config/facebook.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');
$config['facebook']['api_id'] = 'FACEBOOK APP ID';
$config['facebook']['app_secret'] = 'FACEBOOK APP SECRET KEY';
編輯橋接的 library 用法:
$ vim /path/ci_proj/application/libraries/facebook.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once APPPATH . 'libraries/facebook/autoload.php';
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
class Facebook {
 var $ci;
 var $helper;
 var $session;
 var $permissions;
 public function __construct() {
  $this->ci =& get_instance();
  $this->ci->load->config('facebook');
  $this->permissions = $this->ci->config->item('permissions', 'facebook');
  FacebookSession::setDefaultApplication( $this->ci->config->item('api_id', 'facebook'), $this->ci->config->item('app_secret', 'facebook') );
        } 
 public function token_validation($token) {
  try {
   $this->session = new FacebookSession( $token );
   if ( $this->session->validate() )
    return true;
  } catch ( Exception $e ) {
  }
  $this->session = null;
  return false;
 }
 public function get_user($token = NULL) {
  if ( $this->session || (!empty($token) && $this->token_validation($token)) ) {
   $request = ( new FacebookRequest( $this->session, 'GET', '/me' ) )->execute();
   $user = $request->getGraphObject()->asArray();
   return $user;
  }
  return false;
 }
}
使用方式:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Test extends CI_Controller {
 public function index()
 {
  $this->load->config('facebook');
  $this->load->library('facebook');
  $output = array(
   'reqeusts' => $_REQUEST,
   'app_id' => $this->config->item('api_id', 'facebook'),
   'user_id' => $this->facebook->get_user($_REQUEST['token'])
  );
  $this->output->set_content_type('application/json')->set_output(json_encode($output));
        } 
}
沒有留言:
張貼留言