Laravel \ Socialite \ Two \ InvalidStateException Нет сообщения об ошибке в социальной сети Facebook - PullRequest
0 голосов
/ 07 февраля 2019

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

Laravel \ Socialite \ Two \ InvalidStateException Нет сообщения

Это код, который отображается:

public function user()
{
    if ($this->hasInvalidState()) {
        throw new InvalidStateException; // this line is highlighted
    }

    $response = $this->getAccessTokenResponse($this->getCode());

    $user = $this->mapUserToObject($this->getUserByToken(
        $token = Arr::get($response, 'access_token')
    ));

    return $user->setToken($token)
                ->setRefreshToken(Arr::get($response, 'refresh_token'))
                ->setExpiresIn(Arr::get($response, 'expires_in'));
}

Это мой код контроллера:

<?php
 namespace App\Http\Controllers\Auth;

 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use Socialite;

 class SocialAccountController extends Controller
{
/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest');
}
/**
 * Redirect the user to the SNS authentication page.
 *
 * @return Response
 */
public function redirectToProvider($provider)
{
    if ($provider !== 'facebook') {
        return abort(404);
    }

    return Socialite::with($provider)->redirect();
}

public function handleProviderCallback(\App\Models\User $accountService, $provider)
 {
    try {
        $user = Socialite::with($provider)->user();
        $create['name'] = $user->getName();
        $create['email'] = $user->getEmail();
        $create['facebook_id'] = $user->getId();

        $user = $accountService->addNew($create);

        return view ('user.home')->withDetails($user)->withService($provider);
    } catch(Exception $e){
        return redirect('/login');
    }
}
}

Я нашел некоторые ответы, но не эффективен с моей стороны.Я застрял на этом в течение 2 дней.Как я могу решить это?

1 Ответ

0 голосов
/ 07 февраля 2019

Когда вы получаете обратный вызов от поставщика OAuth (в данном случае Facebook), сохраните необходимые данные в своей базе данных, а затем перенаправьте пользователя на страницу учетной записи или другую страницу, которая подтверждает ссылкубыл успешным.

Этот URL-адрес обратного вызова работает специально с учетными данными, предоставленными поставщиком OAuth.После того, как это произойдет, когда истечет срок действия этих учетных данных, обновление страницы вызовет ошибку.При принудительном перенаправлении пользователя на другую страницу, он не сможет обновить и вызвать ту же проблему.

...