Google SSO oauth 2.0 给出获取 OAuth2 访问令牌时出错,消息:'invalid_grant: Code was already redeemed.'

Google SSO aouth 2.0 gives Error fetching OAuth2 access token, message: 'invalid_grant: Code was already redeemed.'

我已经在我的网站上启用 google 登录,它自上次 3-4 个月以来工作正常,但从昨天开始,它开始每隔 4-5 分钟就出现以下错误

Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error fetching OAuth2 access token, message: 'invalid_grant: Code was already redeemed.'' in F:\ServerFolders\Projects\domain.com\src\Google\Client.php(131): Google_Auth_OAuth2->authenticate('4/8hj0saqecCytQ...', false) #1 F:\ServerFolders\Projects\domain.com\application\libraries\NV_gmail.php(105): Google_Client->authenticate('4/8hj0saqecCytQ...') #2 F:\ServerFolders\Projects\domain.com\application\libraries\layout.php(51): NV_gmail->login() #3 F:\ServerFolders\Projects\tl-l.com\application\controllers\dashboard.php(19): layout->header() #4 [internal function]: dashboard->index() #5 F:\ServerFolders\Projects\domain.com\system\core\CodeIgniter.php(359): call_user_func_array(Array, Array) #6 F:\ServerFolders\Projects\domain.com\index.php(202): require_once('F:\ServerFolder...') #7 {main} thrown in F:\ServerFolders\Projects\domain.com\src\Google\Auth\OAuth2.php on line 126

并显示空白页。

当用户点击验证时,您会得到一个验证码。您获取此代码并将其交换为您的访问令牌和刷新令牌。

'invalid_grant: Code was already redeemed

意味着您正在获取一个已经被使用过的验证码,并试图为其获取另一个访问令牌/刷新令牌。

如果它在过去 4 个月内一直有效,我认为有人更改了您的代码并破坏了它。

改变

curl_setopt($curl, CURLOPT_SSLVERSION, 3); 

 //curl_setopt($curl, CURLOPT_SSLVERSION, 3); 

来自 curl.php 根据 github.com/google/google-api-php-client/issues/639 现在工作正常