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。
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。