Sto lavorando con il pacchetto SammyK/Facebook e ho riscontrato un problema con l'accesso a Facebook su CSRF. In precedenza funzionava bene, ma in seguito ho dovuto disabilitare la protezione CSRF nel mio kernel.php per il corretto funzionamento dell'API. Ora ce l'ho aggiornato e ha aggiunto le righe sotto nel middlewareConvalida di falsificazione della richiesta tra siti non riuscita. Richiesto param "stato" mancante pacchetto Laravel Sammyk/Facebook
public function handle($request, Closure $next) {
$skip = array(
'api/v1/signup',
'api/v1/login',
'api/v1/addContacts',
'api/v1/email'
);
foreach ($skip as $key => $route) {
//skip csrf check on route
if($request->is($route)){
return parent::addCookieToResponse($request, $next($request));
}
}
return parent::handle($request, $next);
}
Quindi questo permette web e API per funzionano come previsto, ma dato che avevo disabilitato il CSRF ottengo il Cross-site richiesta di convalida contraffazione riuscita. Errore "stato" param param necessario quando eseguo un accesso FB. Ho provato a eseguire il debug e ho trovato in FacebookRedirectLoginHelper la funzione validateCsrf()
non ottiene lo stato salvato $savedState = $this->persistentDataHandler->get('state');
Non sono sicuro di come risolvere questo come idealmente dovrebbe funzionare ora. Ho provato a stampare sia $ stato e $ stato salvato che ottengo $ stato salvato come null.
class FacebookController extends Controller {
public function fbConnect(LaravelFacebookSdk $fb)
{
// Obtain an access token.
try {
$token = $fb
->getRedirectLoginHelper()
->getAccessToken();
} catch (Facebook\Exceptions\FacebookSDKException $e) {
dd($e->getMessage());
}
// Access token will be null if the user denied the request
// or if someone just hit this URL outside of the OAuth flow.
if (! $token) {
// Get the redirect helper
$helper = $fb->getRedirectLoginHelper();
if (! $helper->getError()) {
abort(403, 'Unauthorized action.');
}
// User denied the request
dd(
$helper->getError(),
$helper->getErrorCode(),
$helper->getErrorReason(),
$helper->getErrorDescription()
);
}
Dove io chiamo codice di sessione .... in login.php o login-callback.php – deemi