Ich habe Schwierigkeiten mit der SDK-Dokumentation von Facebook. Ich habe das SDK von Github heruntergeladen und in mein PHP - Projekt eingefügt.
Hier ist das Dateisystem:
├── Facebook
│ ├── FacebookAuthorizationException.php
│ ├── FacebookCanvasLoginHelper.php
│ ├── FacebookClientException.php
│ ├── FacebookJavaScriptLoginHelper.php
│ ├── FacebookOtherException.php
│ ├── FacebookPermissionException.php
│ ├── FacebookRedirectLoginHelper.php
│ ├── FacebookRequest.php
│ ├── FacebookRequestException.php
│ ├── FacebookResponse.php
│ ├── FacebookSDKException.php
│ ├── FacebookServerException.php
│ ├── FacebookSession.php
│ ├── FacebookThrottleException.php
│ ├── GraphLocation.php
│ ├── GraphObject.php
│ ├── GraphSessionInfo.php
│ ├── GraphUser.php
│ └── fb_ca_chain_bundle.crt
└── test.php
hier ist mein code soweit:
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
FacebookSession::setDefaultApplication('*******','******');
$helper = new FacebookRedirectLoginHelper('http://isgeek.eu/fb/FaRepost/return.php');
$loginUrl = $helper->getLoginUrl();
// Use the login url on a link or button to redirect to Facebook for authentication
Ich bekomme diesen Fehler
Fatal error: Class 'Facebook\FacebookSession' not found in /homepages/2/d184071366/htdocs/isgeek/fb/FaRepost/test.php on line 9
Bei der Aktualisierung meiner PHP -Version ist das Problem hier nicht enthalten. Es scheint, als würden die Dateien PHP nicht gefunden. Ich habe diese Frage gelesen ( Facebook SDK v4 für PHP Minimal Example ), aber es hilft nicht.
Woher kommt dieser Comme?
Ich habe die Lösung gefunden hier
Ich habe seit einiger Zeit nicht in PHP geschrieben und die Dinge haben sich geändert. use Facebook\FacebookSession;
reicht nicht aus. Sie müssen auch einen require_once
hinzufügen.
require_once( 'Facebook/FacebookSession.php' );
Bearbeiten: Für eine detailliertere Lösung überprüfen Sie bitte die Antwort unten.
use packaname\classname
.use
wird verwendet, um dynamische Klassen mit spl_autoload_register
zu laden.autoload.php
oder autoload_fb.php
facebook-php-sdk-v4-4.0-dev/
finden.FACEBOOK_SDK_V4_SRC_DIR
, also Pfad der Facebook-BibliothekHinweis: Ich habe /var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/src/Facebook
Verzeichnis und /var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/autoload.php
Datei im Stammverzeichnis /var/www/stack/24006673/
kopiert.
define('FACEBOOK_SDK_V4_SRC_DIR','/var/www/stack/24006673/Facebook/');
require_once("autoload.php");
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;
FacebookSession::setDefaultApplication('YOUR_APP_ID','YOUR_APP_SECRET');
Dieser Code hat für mich funktioniert
session_start();
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/Entities/AccessToken.php' );
require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookCurl;
// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication('XXXX', 'XXXXXXXXXXXX');
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper( 'http://localhost/demo/demo2/demo2.php' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
}
// see if we have a session
if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject();
// print data
echo print_r( $graphObject, 1 );
} else {
// show login url
echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}
Sie sollten mit allen Pfaden vorsichtig sein!
Ich kann "autoload.php" nicht in Ihrem Dateisystem sehen. In meinem Fall stelle ich den Inhalt von PHP SDK in das Verzeichnis "fb" und verwende die Pfade (hinzugefügt DIR.) In der Zeile "define" im Vergleich zum Beispiel von https : //developers.facebook.com/docs/php/gettingstarted/4.0.0 )
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/fb/src/Facebook/');
require __DIR__ . '/fb/autoload.php';
echo FACEBOOK_SDK_V4_SRC_DIR; //to check if the paths are correct
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
<...>
Es half, diesen Fehler zu vermeiden.
require_once 'Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '{app_id}',
'app_secret' => '{app_secret}',
'default_graph_version' => 'v2.2',
]);
- fügen Sie einfach diesen Code hinzu .it funktioniert . Geben Sie Ihre app_id und app_secret Ihrer facebookAPP ein
Keine Notwendigkeit, require
oder include
..__ zu verwenden. Ich habe es gelöst. Verwenden Sie einfach die folgende Zeile oben in Ihrem Skript:
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-php-sdk-v4/src/Facebook/');
und du bist fertig.