Я пишу небольшое приложение, в котором пытаюсь получить некоторую информацию в 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
,
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);
});
Для людей, которые являются новыми с Lumen. Чтобы сервис Session работал, вы должны включить его в своем bootstrap/app.php
строка 55 — строка 61.