PHP Fatal error: Uncaught GuzzleHttp\Exception\ClientException
PHP Fatal error: Uncaught GuzzleHttp\Exception\ClientException
我工作的不是我的基于网络的项目,它与 GMB API 一起工作,所有关于 Google api 的库和它们的要求都安装了 php作曲家。
现在我还需要使用 Facebook Api.. 所以我也用 composer 安装了这个库。
我如何在文档中看到 API 需要 guzzlehttp 库来处理令牌..好的!
问题可能是 google 令牌与 facebook 令牌冲突,导致此致命错误:
[23-Oct-2020 12:39:12 Europe/Rome] PHP Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `POST https://oauth2.googleapis.com/token` resulted in a `400 Bad Request` response:
{
"error": "invalid_grant",
"error_description": "Malformed auth code."
}
in /home/logictot2/public_html/sdtest/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111
Stack trace:
#0 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
# in /home/logictot2/public_html/sdtest/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 111
所以我尝试在 Facebook 配置中设置 curl 而不是 guzzle 库,但错误仍然存在:
$fb = new Facebook\Facebook([
'app_id' => $your_app_id,
'app_secret' => $your_app_secret,
'default_graph_version' => 'v8.0',
'http_client_handler' => 'curl' //I added here the curl instead 'guzzle'
]);
自从使用 facebook 完成登录后页面正常工作,在给我令牌的登录后出现上述错误。
这是我使用的测试代码:
我做错了什么..
require __DIR__.'/vendor/autoload.php';
session_start();
$your_app_id = 'XXXXXXXXXXX';
$your_app_secret = 'XXXXe803e5cXXXdXXXXf5ae1afacXXd3';
$fb = new Facebook\Facebook([
'app_id' => $your_app_id,
'app_secret' => $your_app_secret,
'default_graph_version' => 'v8.0',
'http_client_handler' => 'curl'
]);
if(!isset($accessToken)) {
$helper = $fb->getRedirectLoginHelper();
if ($helper->getError()) {
header('HTTP/1.0 401 Unauthorized');
echo "Error: " . $helper->getError() . "\n";
echo "Error Code: " . $helper->getErrorCode() . "\n";
echo "Error Reason: " . $helper->getErrorReason() . "\n";
echo "Error Description: " . $helper->getErrorDescription() . "\n";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Bad request';
}
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('https://www.logicamente.it/sdtest/prova.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}else{
try {
$accessToken = $helper->getAccessToken();
echo '<h3>Access Token</h3>';
//var_dump($accessToken->getValue());
} catch(Facebook\Exception\ResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exception\SDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
}
我解决了!问题出在 'guzzle' 库版本中。
在 composer.json 文件中,我在 require 对象中添加了 "guzzlehttp/guzzle": "^5"
行。
之后,我启动命令 composer update,当库 downgraded 时,问题就解决了。
我工作的不是我的基于网络的项目,它与 GMB API 一起工作,所有关于 Google api 的库和它们的要求都安装了 php作曲家。 现在我还需要使用 Facebook Api.. 所以我也用 composer 安装了这个库。
我如何在文档中看到 API 需要 guzzlehttp 库来处理令牌..好的!
问题可能是 google 令牌与 facebook 令牌冲突,导致此致命错误:
[23-Oct-2020 12:39:12 Europe/Rome] PHP Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `POST https://oauth2.googleapis.com/token` resulted in a `400 Bad Request` response:
{
"error": "invalid_grant",
"error_description": "Malformed auth code."
}
in /home/logictot2/public_html/sdtest/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111
Stack trace:
#0 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /home/logictot2/public_html/sdtest/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
# in /home/logictot2/public_html/sdtest/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 111
所以我尝试在 Facebook 配置中设置 curl 而不是 guzzle 库,但错误仍然存在:
$fb = new Facebook\Facebook([
'app_id' => $your_app_id,
'app_secret' => $your_app_secret,
'default_graph_version' => 'v8.0',
'http_client_handler' => 'curl' //I added here the curl instead 'guzzle'
]);
自从使用 facebook 完成登录后页面正常工作,在给我令牌的登录后出现上述错误。
这是我使用的测试代码:
我做错了什么..
require __DIR__.'/vendor/autoload.php';
session_start();
$your_app_id = 'XXXXXXXXXXX';
$your_app_secret = 'XXXXe803e5cXXXdXXXXf5ae1afacXXd3';
$fb = new Facebook\Facebook([
'app_id' => $your_app_id,
'app_secret' => $your_app_secret,
'default_graph_version' => 'v8.0',
'http_client_handler' => 'curl'
]);
if(!isset($accessToken)) {
$helper = $fb->getRedirectLoginHelper();
if ($helper->getError()) {
header('HTTP/1.0 401 Unauthorized');
echo "Error: " . $helper->getError() . "\n";
echo "Error Code: " . $helper->getErrorCode() . "\n";
echo "Error Reason: " . $helper->getErrorReason() . "\n";
echo "Error Description: " . $helper->getErrorDescription() . "\n";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Bad request';
}
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('https://www.logicamente.it/sdtest/prova.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}else{
try {
$accessToken = $helper->getAccessToken();
echo '<h3>Access Token</h3>';
//var_dump($accessToken->getValue());
} catch(Facebook\Exception\ResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exception\SDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
}
我解决了!问题出在 'guzzle' 库版本中。
在 composer.json 文件中,我在 require 对象中添加了 "guzzlehttp/guzzle": "^5"
行。
之后,我启动命令 composer update,当库 downgraded 时,问题就解决了。