I’m working on a new project working as Social Media Planner. I want to connect users’ accounts to my App to be able to publish on their behalf.
I created the app on facebook, and it has been approved.
I’m using Laravel 11 + Vue 3 + PHP SKD kit suggested by Facebook Docs.
The Consent page is loaded successfuly. But after redirection I’m getting error message “Authorization headers are required”.
// FacebookController
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppServicesFacebookService;
use FacebookFacebook;
class FacebookController extends Controller
{
public function __construct(private Facebook $fb)
{
}
/**
* Connect a user with Facebook.
*/
public function connect(Request $request)
{
$loginUrl = FacebookService::getFacebookLoginUrl($this->fb);
return response()->json([
'status' => 'success',
'message' => 'Facebook login URL retrieved successfully',
'loginUrl' => $loginUrl
], 200);
}
/**
* Callback for Facebook login.
*/
public function callback(Request $request)
{
$accessToken = FacebookService::getFacebookAccessToken($this->fb, $request->code);
return response()->json([
'status' => 'success',
'message' => 'Facebook login callback',
'code' => $accessToken
], 200);
}
}
// FacebookService
<?php
namespace AppServices;
use FacebookFacebook;
class FacebookService
{
/**
* Create a new class instance.
*/
public function __construct()
{
}
/**
* Get Facebook login URL
* @param Facebook $fb
* @return string
*/
public static function getFacebookLoginUrl(Facebook $fb): string
{
$helper = $fb->getRedirectLoginHelper();
$scopes = ['public_profile','email','pages_show_list', 'pages_manage_posts', 'pages_read_engagement', 'instagram_content_publish'];
$loginUrl = $helper->getLoginUrl(config('services.facebook.redirect_url'), $scopes);
return $loginUrl ?? '';
}
/**
* Get Facebook access token
* @param Facebook $fb
* @param string $code
* @return string
*/
public static function getFacebookAccessToken(Facebook $fb, string $code): string
{
$helper = $fb->getRedirectLoginHelper();
$accessToken = $helper->getAccessToken();
return $accessToken->getValue() ?? '';
}
}
// FacebookServiceProvider
<?php
namespace AppProviders;
use FacebookFacebook;
use IlluminateSupportServiceProvider;
class FacebookServiceProvider extends ServiceProvider
{
/**
* Register services.
*/
public function register(): void
{
}
/**
* Bootstrap services.
*/
public function boot(): void
{
$this->app->singleton(Facebook::class, function () {
return new Facebook([
'app_id' => config('services.facebook.app_id'),
'app_secret' => config('services.facebook.app_secret'),
'default_graph_version' => config('services.facebook.default_graph_version'),
]);
});
}
}