FacebookのSDKドキュメントで苦労しています。 SDKをGithubからダウンロードして、PHPプロジェクトに追加しました。
ファイルシステムは次のとおりです。
├── 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
これが私のコードです:
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
このエラーが出ます
Fatal error: Class 'Facebook\FacebookSession' not found in /homepages/2/d184071366/htdocs/isgeek/fb/FaRepost/test.php on line 9
更新された私のPHPバージョンなので、ここから問題が発生しません。PHPファイルが見つからないようです。この質問を読んで(- Facebook SDK v4 for PHP最小限の例 )ですが、役に立ちません。
これはどこから来たの?
私は解決策を見つけました ここ
私はしばらくの間PHPでコーディングしていませんでしたが、状況は変わりました。 use Facebook\FacebookSession;
では不十分です。 require_once
も追加する必要があります。
require_once( 'Facebook/FacebookSession.php' );
編集:より詳細な解決策については、以下の答えをチェックアウトしてください。
use packaname\classname
。use
は、spl_autoload_register
を使用して動的クラスをロードするために使用されますautoload.php
またはautoload_fb.php
を使用してすべてのライブラリを登録しますfacebook-php-sdk-v4-4.0-dev/
のようなダウンロードしたライブラリでautoload.phpを見つける必要があります。FACEBOOK_SDK_V4_SRC_DIR
の定義済み定数、つまりFacebookライブラリのパス注:/var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/src/Facebook
ディレクトリと/var/www/stack/24006673/facebook-php-sdk-v4-4.0-dev/autoload.php
ファイルをルートディレクトリにコピーしました/var/www/stack/24006673/
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');
このコードは私のために働きました
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>';
}
すべてのパスに注意する必要があります!
ファイルシステムに「autoload.php」が表示されません。私の場合、PHP SDKのコンテンツをディレクトリ "fb"に置き、パスを使用します(追加[〜#〜] dir [〜# 〜]。 https://developers.facebook.com/docs/php/gettingstarted/4.0. の例と比較して、「define」行に)
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;
<...>
そのようなエラーを回避するのに役立ちました。
require_once 'Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '{app_id}',
'app_secret' => '{app_secret}',
'default_graph_version' => 'v2.2',
]);
-このコードを追加するだけで動作します。 facebookAPPのapp_idとapp_secretを入力します
require
またはinclude
を使用する必要はありません。解決しました。スクリプトの上部で次の行を使用するだけです。
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-php-sdk-v4/src/Facebook/');
これで完了です。