본문 바로가기

Programming/PHP

Facebook API Session Login 구현/그룹 글 불러오기


Facebook API를 이용한 Session Login 구현 및 Group 글 불러오는 예제




<style>

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css);


body {

    font-family: 'Nanum Gothic', serif;

}

table {}

</style>


<?

error_reporting(E_ALL^E_NOTICE);

session_start();

$app_id="App id";

$app_secret = "APP SECRET 입력";

$group_id="파싱할 그룹아이디 출력";

$callback_url="http://본 파일 url 입력";

define('FACEBOOK_SDK_V4_SRC_DIR', './facebook-php-sdk-v4/src/Facebook/');

require __DIR__ . '/facebook-php-sdk-v4/autoload.php';



use Facebook\HttpClients\FacebookHttpable;

use Facebook\HttpClients\FacebookCurl;

use Facebook\HttpClients\FacebookCurlHttpClient;


use Facebook\Entities\AccessToken;

use Facebook\Entities\SignedRequest;


use Facebook\FacebookSession;

use Facebook\FacebookRedirectLoginHelper;

use Facebook\FacebookRequest;

use Facebook\FacebookResponse;

use Facebook\FacebookSDKException;

use Facebook\FacebookRequestException;

use Facebook\FacebookOtherException;

use Facebook\FacebookAuthorizationException;

use Facebook\GraphObject;

use Facebook\GraphSessionInfo;



FacebookSession::setDefaultApplication($app_id,$app_secret);

$helper = new FacebookRedirectLoginHelper($callback_url);


// see if a existing session exists

if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {

  // create new session from saved access_token

  $session = new FacebookSession( $_SESSION['fb_token'] );

  

  // validate the access_token to make sure it's still valid

  try {

    if ( !$session->validate() ) {

      $session = null;

    }

  } catch ( Exception $e ) {

    // catch any exceptions

    $session = null;

  }

}  


if ( !isset( $session ) || $session === null ) {

  // no session exists

  

  try {

    $session = $helper->getSessionFromRedirect();

  } catch( FacebookRequestException $ex ) {

    // When Facebook returns an error

    // handle this better in production code

    print_r( $ex );

  } catch( Exception $ex ) {

    // When validation fails or other local issues

    // handle this better in production code

    print_r( $ex );

  }

  

}


// see if we have a session

if ( isset( $session ) ) {

  

  // save the session

  $_SESSION['fb_token'] = $session->getToken();

  // create a session using saved token or the new one we generated at login

  $session = new FacebookSession( $session->getToken() );

  

  // graph api request for user data

  $request = new FacebookRequest( $session, 'GET', '/576963682395940?fields=feed{from,message,created_time}' );

  $response = $request->execute();

  // get response

  $graphObject = $response->getGraphObject()->asArray();

  

  // print profile data

echo '<table border=1>

<tr>

<td>작성일</td>

<td>작성자</td>

<td>내용</td>

</tr>';

  foreach ($graphObject['feed'] as $key => $value) {

  foreach ((array)$value as $key2 => $value2) {

 

  $resArray = (array)$value2;//std Class에서 강제 형변환  

  $resArray['from'] = (array)$resArray['from'];

  //$date = date()

  echo "<tr><td>{$resArray['created_time']}</td><td>{$resArray['from']['name']}</td><td>{$resArray['message']}</td></tr>";


  }

   

  }

  print_r($resArray);

  //echo '<pre>' . print_r( $graphObject, 1 ) . '</pre>';

  

  // print logout url using session and redirect_uri (logout.php page should destroy the session)

  echo '<a href="' . $helper->getLogoutUrl( $session, '로그아웃구현하면됨' ) . '">Logout</a>';

  

} else {

  // show login url

  echo '<a href="' . $helper->getLoginUrl( array( 'email', 'user_friends', 'user_groups' ) ) . '">Login</a>';

}



?>

'Programming > PHP' 카테고리의 다른 글

Codeigniter Index.php 없애기  (0) 2015.02.14
MySQL UPDATE문 CASE(조건문) 사용  (0) 2015.02.08