PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Friday, February 11, 2022

[FIXED] Facebook login with sdk php

 February 11, 2022     facebook, facebook-php-sdk     No comments   

Issue

I'm a french student so, sorry for my bad English. I develop with Facebook sdk js and sdk php.

I had a login problem during about 10 months. Some of people couldn't access to my app or needed to reload the page. Now, I'm trying the new Facebook sdk 4.0 but that's not better, i probably forgot something.

Actually, sometimes i can access to my app directly, sometimes i have an error and i just need to reload, and sometimes i can't access to my app although i reload. That's very aleatory.

I show you a screen of the error i have when i print_r on a FacebookRequestException when i try to have a $session ($session = $helper->getSession();).

Error message

That's how i use the Facebook sdk php :

require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/HttpClients/FacebookCurl.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/HttpClients/FacebookCurlHttpClient.php' );

require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/Entities/AccessToken.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/Entities/SignedRequest.php' );

require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookSession.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookRequest.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookResponse.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookSDKException.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookRequestException.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookOtherException.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookAuthorizationException.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/GraphObject.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/GraphSessionInfo.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookSignedRequestFromInputHelper.php' );
require_once( 'facebook/facebook-php-sdk-v4-4.0-dev/src/Facebook/FacebookJavaScriptLoginHelper.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;
use Facebook\FacebookSignedRequestFromInputHelper;
use Facebook\FacebookJavaScriptLoginHelper;

session_start();

FacebookSession::setDefaultApplication('***','***');
$helper = new FacebookJavaScriptLoginHelper();


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

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

  try {
    if ( !$session->validate() ) {
      $session = null;
    }
  } catch ( Exception $e ) {
    $session = null;
  }

} else {

    try {
        $session = $helper->getSession();
    } catch(FacebookRequestException $ex) {
        print_r($ex);
    } catch(\Exception $ex) {
        print_r($ex);
    }
}

// see if we have a session
if ( isset( $session ) ) {


  $access_token = $session->getToken(); 
  $appsecret_proof = hash_hmac('sha256', $access_token, '***'); 

  $request = new FacebookRequest( $session, 'GET', '/me', array("appsecret_proof" =>  $appsecret_proof) ); 
  $response = $request->execute();
  $graphObject = $response->getGraphObject();
  $GLOBALS["facebook"]["joueur"] = $graphObject; 



  $request = new FacebookRequest( $session, 'GET', '/me/friends', array("appsecret_proof" =>  $appsecret_proof) );
  $response = $request->execute();
  $graphObject = $response->getGraphObject();
  $GLOBALS["facebook"]["amis"] = $graphObject->asArray()["data"]; 

}

Thank you to try to help me


Solution

Finally and after a lot of hours of search, I removed all the php sdk. I can recolte all information about the user by the js sdk, and use ajax for access to my bdd. During all of this process, I load all my js files and when I receive the php data, i call some functions for fill the div.



Answered By - Sébastien Josserand
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing