У меня обычная аутентификация для логина и пароля.
Я хочу создать кнопку и использовать facebook / graph-sdk для создания аутентификации для facebook в моем приложении в symfony4.
Я знаю как создать его в simle PHP, но я не знаю, как добавить его в свой проект symfony.
Ну, я использую
composer require facebook/graph-sdk
И как интегрировать его для использования в моих контроллерах?
В моем приложении есть кнопка и ссылка на маршрут «login_facebook».
My SecurityController:
<code><?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
use \Facebook;
if(!isset($_SESSION)){session_start();}
$session = new Session(new PhpBridgeSessionStorage());
$session->start();
class SecurityController extends AbstractController
{
/**
* @Route("/login", name="app_login")
*/
public function login(AuthenticationUtils $authenticationUtils): Response
{
// if ($this->getUser()) {
// $this->redirectToRoute('target_path');
// }
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]);
}
/**
* @Route("/login/facebook", name="login_facebook")
*/
public function loginFacebook()
{
$FB = new \Facebook\Facebook([
'app_id' => '123456789',
'app_secret' => '1234a56789b0f34a56789b01',
'default_graph_version' => 'v2.10'
]);
$helper = $FB->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
echo "Response Exception: " . $e->getMessage();
exit();
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
echo "SDK Exception: " . $e->getMessage();
exit();
}
if (!$accessToken) {
return $this->redirectToRoute("home");
exit();
}
$oAuth2Client = $FB->getOAuth2Client();
if (!$accessToken->isLongLived())
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
$response = $FB->get("/me?fields=id, first_name, last_name, email, picture.type(large)", $accessToken);
$userData = $response->getGraphNode()->asArray();
$_SESSION['userData'] = $userData;
$_SESSION['access_token'] = (string) $accessToken;
return $this->redirectToRoute("home");
exit();
echo '<pre>';
echo print_r($_SESSION);
echo '
'; вернуть новый Response (); } / ** * @Route ("/ logout", name = "app_logout") * / publi c function logout () {throw new \ Exception ('Этот метод может быть пустым - он будет перехвачен ключом выхода на вашем брандмауэре '); }}
Но я не знаю, что делать дальше. В данный момент мое приложение не авторизуется через facebook.
Пожалуйста, помогите мне :)