knpuniversity oauth2client 预期状态经常为空

knpuniversity oauth2client expected state is null often

vendor/knpuniversity/oauth2-client-bundle/src/Client/OAuth2Client.php:

当我注销用户并尝试再次使用 facebook 登录时,我经常会遇到此异常 - InvalidStateException。 "User see Invalid state parameter passed in callback URL."那是因为会话中没有数据。但为什么会发生这种情况?

使用这个包:

https://github.com/knpuniversity/oauth2-client-bundle

这是从我的 facebook 身份验证器调用的 class:

public function getCredentials(Request $request)
    {
        // this method is only called if supports() returns true

        return $this->fetchAccessToken($this->getFacebookClient());
    }

还注意到如果我在此异常后再次尝试使用 facebook 登录,那么它会成功登录。但后来发现情况也并非总是如此。

我认为某处与竞争条件有关,因为当我使用 xdebug 并且代码在断点处停止时,它通常可以正常工作。

问题是 chrome 由于预取而发送了 2 个请求。

https://www.keycdn.com/support/prefetching

当我在地址栏中输入 url 时(为了测试我还没有制作 facebook 按钮)chrome 立即加载它。然后我按回车键,它再次加载。当有 2 个使用 facebook 登录的请求时,事情开始变得意想不到。

在firefox上测试过,没有这个问题。当我让 link 登录到 facebook 时,我不必在地址栏中输入,它也不会进行预取,问题也出现了 chrome。