Facebook SDK v4 Login PHP — несколько страниц

#php #html #facebook #login #sdk

#php #HTML #Facebook #аутентификация #sdk

Вопрос:

Я хочу добавить кнопку входа с помощью Facebook на свою веб-страницу. Я успешно вошел в систему с SDK v4.0.

Но я вошел только на той же странице. ($helper = новый FacebookRedirectLoginHelper(SAME_PAGE))

Вот мой код (loginFB.php ). Это работает нормально, но мой вопрос: как я могу включить этот PHP на другую страницу (defaultLogin.php ). Я не вижу там форму переменной $session, она входит в систему (потому что она возвращается к моему defaultLogin.php с помощью ?code=FACEBOOK_AUTH_CODE), но я не могу видеть сеанс.

Кто-нибудь может помочь?

Спасибо!

loginFB.php

 <?php

session_start();

if(isset($_GET['action']) amp;amp; $_GET['action'] === 'logout'){
    $session->destroySession();
    unset($_SESSION['token']);
    unset($session);
}

require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphUser.php' );
require_once( 'Facebook/GraphSessionInfo.php' );
require_once( 'config/fbconfig.php' );

use FacebookFacebookSession;
use FacebookFacebookRedirectLoginHelper;
use FacebookFacebookRequest;
use FacebookFacebookResponse;
use FacebookFacebookSDKException;
use FacebookFacebookRequestException;
use FacebookFacebookAuthorizationException;
use FacebookGraphObject;
use FacebookGraphUser;
use FacebookGraphSessionInfo;


// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication(APP_ID,APP_SECRET);

// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'http://myWeb/defaultLogin.php' );

try{
    $session = $helper->getSessionFromRedirect();
}catch(Exception $e){
    //echo "Facebook error: ". $e->getMessage();
}

if(isset($session)){
    $_SESSION['token'] = $session->getToken();
    echo "Login Successful<br>";
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    $graph = $response->getGraphObject(GraphUser::className());
    $graph2 = $response->getGraphObject()->asArray();



    echo "Id: " . $graph->getId() . "<br>";
    echo "Hi " . $graph->getName() . "<br>";
    echo "Email: " . $graph2['email'] . "<br>";
    // print profile data
    echo '<pre>' . print_r( $graph2, 1 ) . '</pre>';

    echo "<img src='http://graph.facebook.com/".$graph->getId()."/picture?type=large' border=0>";

    echo "<script> checkUser('".$graph->getId()."','".$session->getToken()."','".$graph2['email']."'); </script>";

    echo '<a href="?action=logout">Logout</a>';


}
else{
    echo "<a href = " . $helper->getLoginUrl(array( 'email', 'user_friends' )) . ">Login con Facebook v1</a>";
}


if(isset($_SESSION['token'])){
    $session = new FacebookSession($_SESSION['token']);

    try{
        $session->Validate(APP_ID, APP_SECRET);
    }catch(FacebookAuthorizationException $e){
        $session = '';
    }
}
?>
  

defaultLogin.php

 <!DOCTYPE html>
<?php session_start(); ?>
<html prefix="og: http://ogp.me/ns#" lang="es" conduit_compatibility_version="1" style="margin-top: 0px; position: relative !important;"><!--<![endif]--><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    <meta charset="utf-8">
    <?php include 'head.php';?>   

(...)

<?php include 'header.php';?>  
<?php include 'navLogin.php';?> (...)
  

navLogin.php

 <?php include_once('loginFb.php')?>
 <!-- Navigator BAR -->
    <nav class="navbar navbar-inverse navbar-static-top" role="navigation">
        <div class="container"> (...)
  

Ответ №1:

в вашем коде не хватает нескольких классов. вам нужно добавить следующие классы в свой код перед использованием строки FacebookFacebookSession; , и он должен работать.

 require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/Entities/AccessToken.php' );
require_once( 'Facebook/Entities/SignedRequest.php' );