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 时,问题就解决了。