Я пытаюсь реализовать вход в Facebook с использованием Laravel Socialite в приложении Laravel 5.8.21.Что я сделал, так это то, что у меня есть кнопка на странице, и я хочу, чтобы пользователь мог подключить свой профиль к своему профилю Facebook и получить из него токен Facebook.
На данный момент я загрузил laravel / socialite через композитора, добавил FacebookServiceProvider и зарегистрировал его в приложении Laravel:
<?php
namespace App\Providers;
use Facebook\Facebook;
use Illuminate\Support\ServiceProvider;
class FacebookServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->app->singleton(Facebook::class, function($app) {
$config = config('services.facebook');
return new Facebook([
'app_id' => $config['client_id'],
'app_secret' => $config['client_secret'],
'default_graph_version' => $config['default_graph_version']
]);
});
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
Следующим шагом для меня былосоздайте приложение для Facebook, чтобы получить app_id и app_secret и правильную версию графика.Я ввел эти учетные данные в свой файл .env.
Теперь я реализовал SocialMediaController и добавил Действия для Facebook для управления OAuth-подключением и получения токена из Facebook.
<?php
namespace App\Http\Controllers\EmployerBackend;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite;
class SocialMediaController extends Controller
{
public function index(Request $request)
{
$user = $request->user();
return response()->view('backend.employer.social-media.index', [
'user' => $user
]);
}
public function redirectToFacebookProvider()
{
return Socialite::driver('facebook')->scopes([
'manage_pages', 'publish_pages'
])->redirect();
}
public function handleProviderFacebookCallback()
{
$authUser = Socialite::driver('facebook')->user();
$user = User::where('email', '=', $authUser->email)->first();
if ($user === null) {
abort(404);
}
$user->facebook_token = $authUser->token;
$user->save();
return response()->redirectToRoute('employer.socialMedia.index');
}
}
Теперь, когда я нажимаю на кнопку и принимаю модальное диалоговое окно facebook, я перенаправлен на мой сайт.Но я каждый раз получаю NGINX 502 Bad Gateway, и я не знаю, чем он вызван.
Мои настройки:
Laravel 5.8.24
Laravel Valet
Nginx 1.17.0
MySQL Ver 14.14 Distrib 5.7.25, for osx10.14 (x86_64) using EditLine wrapper
PHP@7.2
OS: macOS Mojave 10.14.5
Кто-нибудь знает, почему у меня здесь Bad Gateway?
РЕДАКТИРОВАТЬ:
сообщение об ошибке: * 13 восходящее преждевременно закрытое соединение при чтении заголовка ответа из восходящего потока
Это вызывает шлюз 502, и это происходит, когда клиент FB пытаетсяполучить токен доступа.
Кто-нибудь имел это раньше?