Reputation: 9885
I had a working site using facebook api version 2.0 but was having some problems. I realized some of my calls were depreciated and so I set up composer and included the facebook api.
I think my problem is how I am including the api in my site.
I was using require 'facebookAPI/src/facebook.php';
Now that I am using composer
this does not work.
file path is, vendor/facebook/php-sdk-v4/src/Facebook/ There is no facebook.php file in here.
How do I add the api? If facebook.php does not exist anymore? Do I use different files to achieve different goals? And last.. Can I use the autoloader by
require 'vendor/autoload.php';
If is there anything else i'm supposed to do from there?
Here is my full current code that just shows a blank page when the page loads.
<?php
require 'vendor/autoload.php';
$facebook = new Facebook(array(
'appId' => 'foo foo foo',
'secret' => 'foo foo foo',
));
$user = $facebook->getUser();
if ($user) {
try {
$user_info = $facebook->api('/' . $user);
$user_tags = $facebook->api('/' . $user . '/tagged_places');
$friends = $facebook->api('/' . $user . '/friends');
$user_feed = $facebook->api('/' . $user . '/feed/?with=location');
$friends_locations = $facebook->api('/' . $user . '/friends/?fields=location');
$user_checkins = $facebook->api('/' . $user . '/checkins');
$friends_checkins = $facebook->api('/' . $user . '/friends/checkins');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$params = array( 'next' => 'http://www.wuno.com/sandbox/actions/fbLogout.php' );
$logoutUrl = $facebook->getLogoutUrl($params);
} else {
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'user_tagged_places, email, publish_actions, publish_stream, user_birthday, user_work_history, user_hometown, user_photos, user_about_me, user_checkins, friends_checkins, user_location, friends_location, read_stream, user_status, friends_status')
);
}
?>
Upvotes: 2
Views: 5003
Reputation: 9885
Facebook api v-4 uses namespaces
namespace
A namespace is a way of grouping code that exists across multiple files without having a naming collision. That is, you can have the same named class in two different places if they are encapsulated within namespaces.
so in the code in the question above the FB API
is loaded with vendor
and called like this,
require 'vendor/autoload.php';
Now that the FB API
is added you just need to use the namespace
of the classes you require for whatever you're trying to accomplish.
In my situation I ditched vendor and added these classes like so,
// include required classes from Facebook SDK
require_once( 'facebook/src/Facebook/FacebookHttpable.php' );
require_once( 'facebook/src/Facebook/FacebookCurl.php' );
require_once( 'facebook/src/Facebook/FacebookCurlHttpClient.php' );
require_once( 'facebook/src/Facebook/FacebookSession.php' );
require_once( 'facebook/src/Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'facebook/src/Facebook/FacebookRequest.php' );
require_once( 'facebook/src/Facebook/FacebookResponse.php' );
require_once( 'facebook/src/Facebook/FacebookSDKException.php' );
require_once( 'facebook/src/Facebook/FacebookRequestException.php' );
require_once( 'facebook/src/Facebook/FacebookOtherException.php' );
require_once( 'facebook/src/Facebook/FacebookAuthorizationException.php' );
require_once( 'facebook/src/Facebook/GraphObject.php' );
require_once( 'facebook/src/Facebook/GraphSessionInfo.php' );
// Called class with namespace
use Facebook\FacebookHttpable;
use Facebook\FacebookCurl;
use Facebook\FacebookCurlHttpClient;
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;
Please take note this is done with \
and not /
Each task you want to achieve with the FB API
may require different classes then the ones included in my answer.
Upvotes: 2