Facebook PHP SDK 4.0 Войти через Lumen

Я пишу небольшое приложение, в котором пытаюсь получить некоторую информацию в Facebook, но мне не удается заставить аутентификацию работать.

Сначала я настроил AppServiceProvider с:

FacebookSession::setDefaultApplication(static::APP_ID, static::APP_SECRET);

Тогда, на мой взгляд, у меня просто есть кнопка, которая идет в auth URL.
auth Маршрут использует HomeController@index, который содержит следующее:

public function auth(Request $request)
{
$helper = new FacegroupRedirectLoginHelper($request->url());

if($session = $helper->getSessionFromRedirect()) {
dd($session);
}

return redirect($helper->getLoginUrl());
}

Я создал свой собственный FacebookRedirectLoginHelper который расширяет базовый класс Facebook. Это имеет следующие методы, просто чтобы использовать люмен Session реализация:

protected function storeState($state)
{
Session::put(static::SESSION_KEY, $state);
}

protected function loadState()
{
return $this->state = Session::get(static::SESSION_KEY, null);
}

Этот код почему-то не работает, я видел людей, которые делают это в Интернете. Что может быть не так? Сессия всегда NULL,

1

Решение

Facebook SDK V5 для Laravel Works Отлично с Lumen, вам просто нужно изменить маршрутизацию … Вот как вы настраиваете и используете LaravelFacebookSdk с Lumen

Использовать в первую очередь

{
"require": {
"sammyk/laravel-facebook-sdk": "~3.0"}
}

Затем в вашем загрузочном / app.php люмен добавить

// Facebook Sdk Provider
$app->register('SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider');

Затем опубликуйте конфигурацию (убедитесь, что у вас есть настройка папки конфигурации с lumen, по умолчанию ее там нет)

$ php artisan vendor:publish --provider="SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider"

Основным шагом является настройка поставщика услуг и Laravel Facebook Sdk.
По умолчанию LaravelFacebookSdk.php а также LaravelUrlDetectionHandler.php использования Illuminate\Routing\UrlGenerator , Вы найдете эти файлы в папке src vendor и замените их на Laravel\Lumen\Routing\UrlGenerator , И вы сделали. (Будьте осторожны при редактировании файлов src производителя не рекомендуется потому что он будет перезаписан при следующем вызове composer update или новая версия появляется в хранилище композитора. Это просто быстрое решение для тестирования. Разветвите его, сделайте свое собственное репо или найдите способ)

Тогда вы сможете использовать LaravelFacebookSdk в Lumen, как это

$app->get('/user', function(SammyK\LaravelFacebookSdk\LaravelFacebookSdk $fb){

// Get basic info on the user from Facebook.
try {

$token = "your-access-token-here";

$fb->setDefaultAccessToken($token);

$response = $fb->get('/me?fields=id,name,email');
} catch (Facebook\Exceptions\FacebookSDKException $e) {
dd($e->getMessage());
}

// Convert the response to a `Facebook/GraphNodes/GraphUser` collection
$facebook_user = $response->getGraphUser();

var_dump($facebook_user);

});
2

Другие решения

Для людей, которые являются новыми с Lumen. Чтобы сервис Session работал, вы должны включить его в своем bootstrap/app.php строка 55 — строка 61.

1

По вопросам рекламы [email protected]