1. Go to this page and download the library: Download pharit/tong-facebook-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Tong\FacebookSdk\Facades\Facebook;
// Get user profile
$userProfile = Facebook::get('me', ['access_token' => $accessToken]);
// Create a post
$post = Facebook::post('me/feed', [
'access_token' => $accessToken,
'message' => 'Hello from Laravel!'
]);
use Tong\FacebookSdk\Services\FacebookService;
use Tong\FacebookSdk\Services\FacebookAuthService;
use Tong\FacebookSdk\Services\FacebookGraphService;
class FacebookController extends Controller
{
public function __construct(
private FacebookService $facebookService,
private FacebookAuthService $authService,
private FacebookGraphService $graphService
) {}
public function login()
{
$loginUrl = $this->authService->getLoginUrl(['public_profile', 'email']);
return redirect($loginUrl);
}
public function callback(Request $request)
{
$code = $request->get('code');
$tokenData = $this->authService->getAccessTokenFromCode($code);
$user = $this->authService->getUser($tokenData['access_token']);
return response()->json($user);
}
}
// 1. Generate login URL
$loginUrl = app(FacebookAuthService::class)->getLoginUrl([
'public_profile',
'email',
'user_posts'
]);
// 2. Redirect user to Facebook
return redirect($loginUrl);
// 3. Handle callback
public function handleCallback(Request $request)
{
$code = $request->get('code');
$tokenData = app(FacebookAuthService::class)->getAccessTokenFromCode($code);
// Store the access token
$accessToken = $tokenData['access_token'];
// Get user information
$user = app(FacebookAuthService::class)->getUser($accessToken);
return response()->json($user);
}
$authService = app(FacebookAuthService::class);
// Debug token information
$tokenInfo = $authService->debugToken($accessToken);
// Extend short-lived token to long-lived
$longLivedToken = $authService->extendToken($accessToken);
// Get user permissions
$permissions = $authService->getUserPermissions($accessToken);
// Revoke permissions
$authService->revokePermissions($accessToken, ['email']);
$graphService = app(FacebookGraphService::class);
// Get user profile
$profile = $graphService->getUserProfile($accessToken, [
'id', 'name', 'email', 'picture'
]);
// Get user posts
$posts = $graphService->getUserPosts($accessToken, [
'id', 'message', 'created_time'
], 10);
// Create a post
$post = $graphService->createPost($accessToken, 'Hello from Laravel!');
// Get user friends
$friends = $graphService->getUserFriends($accessToken, ['id', 'name']);
// Get user photos
$photos = $graphService->getUserPhotos($accessToken, [
'id', 'source', 'created_time'
]);
// Upload a photo
$photo = $graphService->uploadPhoto(
$accessToken,
'https://example.com/image.jpg',
'My awesome photo!'
);
// Get user albums
$albums = $graphService->getUserAlbums($accessToken, [
'id', 'name', 'description'
]);
// Create an album
$album = $graphService->createAlbum(
$accessToken,
'My Vacation Photos',
'Photos from my recent vacation'
);
// Get user's pages
$pages = $graphService->getUserPages($accessToken, [
'id', 'name', 'access_token'
]);
// Get page information
$page = $graphService->getPage($pageId, $pageAccessToken, [
'id', 'name', 'fan_count', 'category'
]);
// Create a post on a page
$pagePost = $graphService->createPagePost(
$pageId,
$pageAccessToken,
'Hello from our page!'
);
// Get user's groups
$groups = $graphService->getUserGroups($accessToken, [
'id', 'name', 'privacy'
]);
// Get group information
$group = $graphService->getGroup($groupId, $accessToken, [
'id', 'name', 'description', 'member_count'
]);
// Create a post in a group
$groupPost = $graphService->createGroupPost(
$groupId,
$accessToken,
'Hello group members!'
);
// Get comments on a post
$comments = $graphService->getComments($postId, $accessToken, [
'id', 'message', 'from', 'created_time'
]);
// Add a comment
$comment = $graphService->addComment($postId, $accessToken, 'Great post!');
// Get likes on a post
$likes = $graphService->getLikes($postId, $accessToken, [
'id', 'name'
]);
// Like a post
$graphService->likePost($postId, $accessToken);
// Unlike a post
$graphService->unlikePost($postId, $accessToken);
// Search for users
$users = $graphService->search('John Doe', 'user', $accessToken, [
'id', 'name', 'picture'
]);
// Search for pages
$pages = $graphService->search('Laravel', 'page', $accessToken, [
'id', 'name', 'category'
]);
// Get insights for a page
$insights = $graphService->getInsights($pageId, $pageAccessToken, [
'page_impressions',
'page_engaged_users'
], 'day');
// Enable caching in config
'cache' => [
'enabled' => true,
'ttl' => 3600, // 1 hour
],
// Cache is automatically used for GET requests
$userProfile = $graphService->getUserProfile($accessToken); // Cached
$posts = $graphService->getUserPosts($accessToken); // Cached
// Enable logging in config
'logging' => [
'enabled' => true,
'channel' => 'stack',
],
// Logs will be written to the specified channel
// You can view them in your Laravel logs