jbelien / oauth2-openstreetmap

OpenStreetMap OAuth 2.0 support for the PHP League's OAuth 2.0 Client
MIT License
3 stars 2 forks source link

ConnectException in getAccessToken() #50

Closed Zverik closed 3 months ago

Zverik commented 3 months ago

I've copied the sample code from the readme and created an app on the osm.org website (with 127.0.0.1 callback url). I get this exception:

[15-Jun-2024 11:21:45 UTC] PHP Fatal error:  Uncaught GuzzleHttp\Exception\ConnectException: cURL error 7: Failed to connect to www.openstreetmap.org port 443 after 223 ms: Couldn't connect to server (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://GxSW05jlgBvOHuSqed5l6ksuDfgQS4v-ndOsvNeGb7E:4aOzdz3AyCa7Ch3u0ofjZMimvUQKOpnzggUoZZwV12Q@www.openstreetmap.org/oauth2/token in /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:210
Stack trace:
#0 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(158): GuzzleHttp\Handler\CurlFactory::createRejection()
#1 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(110): GuzzleHttp\Handler\CurlFactory::finishError()
#2 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(47): GuzzleHttp\Handler\CurlFactory::finish()
#3 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke()
#4 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(48): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}()
#5 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(64): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}()
#6 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Middleware.php(31): GuzzleHttp\PrepareBodyMiddleware->__invoke()
#7 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(71): GuzzleHttp\Middleware::GuzzleHttp\{closure}()
#8 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\RedirectMiddleware->__invoke()
#9 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/HandlerStack.php(75): GuzzleHttp\Middleware::GuzzleHttp\{closure}()
#10 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Client.php(333): GuzzleHttp\HandlerStack->__invoke()
#11 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Client.php(106): GuzzleHttp\Client->transfer()
#12 /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Client.php(124): GuzzleHttp\Client->sendAsync()
#13 /home/zverik/progr/git/level0/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(706): GuzzleHttp\Client->send()
#14 /home/zverik/progr/git/level0/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(719): League\OAuth2\Client\Provider\AbstractProvider->getResponse()
#15 /home/zverik/progr/git/level0/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(635): League\OAuth2\Client\Provider\AbstractProvider->getParsedResponse()
#16 /home/zverik/progr/git/level0/www/test.php(33): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken()
#17 {main}
  thrown in /home/zverik/progr/git/level0/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 210

I have no idea why this happens (and why it uses basic auth instead of POST auth), but creating the issue for people who encounter a similar problem.

Zverik commented 3 months ago

So I dug deep, found out curl_exec() doesn't work in apache, and it boiled down to SELinux access restrictions. What fixed this was:

sudo setsebool httpd_can_network_connect 1