Laravel \名媛\二\ InvalidStateException Facebook的社交名媛没有消息错误

问题描述 投票:0回答:1

我使用Facebook的我的应用程序的登录。用户成功登录后,他们将被重定向到我的用户主页。但是,当我尝试刷新页面后,日志中它抛出一个错误:

Laravel \名媛\二\ 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天了。我怎样才能解决这个问题?

php laravel facebook laravel-socialite
1个回答
0
投票

当你从一个OAuth提供的回调(在这种情况下,Facebook的),你需要将数据存储到数据库,然后将用户重定向到一个帐户页面,或确认该链接是成功的另一页。

该回调URL由OAuth的提供商提供的凭据具体工作。被击中后的第一次这些凭据到期,刷新页面导致错误。通过强制将用户重定向到另一个页面,然后他们将无法刷新,并导致了同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.