Hello,
After upgrading my journal from OJS 3.3.0-21 to OJS 3.4.0-9, I am encountering a fatal error related to the ORCID Profile plugin when a user tries to connect their ORCID account.
The Apache error log shows the following:
[Thu Sep 04 23:49:12.060261 2025] [php:error] [pid 1190:tid 1190] [client 74.179.68.9:24594] PHP Fatal error: Uncaught GuzzleHttp\\Exception\\ServerException: Server error: POST https://orcid.org/oauth/token resulted in a 500 Internal Server Error response:\n{"error":"server_error","error_description":"An authorization code must be supplied."}\n in /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111\nStack trace:\n#0 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\\Exception\\RequestException::create()\n#1 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\\Middleware::GuzzleHttp\\{closure}()\n#2 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\\Promise\\Promise::callHandler()\n#3 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}()\n#4 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\\Promise\\TaskQueue->run()\n#5 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\\Promise\\Promise->invokeWaitFn()\n#6 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#7 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\\Promise\\Promise->invokeWaitList()\n#8 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\\Promise\\Promise->waitIfPending()\n#9 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\\Promise\\Promise->wait()\n#10 /var/www/html/plugins/generic/orcidProfile/OrcidProfileHandler.php(295): GuzzleHttp\\Client->request()\n#11 [internal function]: APP\\plugins\\generic\\orcidProfile\\OrcidProfileHandler->orcidVerify()\n#12 /var/www/html/lib/pkp/classes/core/PKPRouter.php(334): call_user_func()\n#13 /var/www/html/lib/pkp/classes/core/PKPPageRouter.php(278): PKP\\core\\PKPRouter->_authorizeInitializeAndCallRequest()\n#14 /var/www/html/lib/pkp/classes/core/Dispatcher.php(165): PKP\\core\\PKPPageRouter->route()\n#15 /var/www/html/lib/pkp/classes/core/PKPApplication.php(395): PKP\\core\\Dispatcher->dispatch()\n#16 /var/www/html/index.php(21): PKP\\core\\PKPApplication->execute()\n#17 {main}\n thrown in /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 111
From the error message it seems that the request sent to ORCID is missing the authorization code parameter, which should normally be returned during the OAuth2 authorization flow.
-
ORCID integration was working correctly on OJS 3.3.
-
After the upgrade to OJS 3.4.0-9, this error appears when attempting to verify/link an ORCID iD.
-
ORCID API credentials (client ID, secret, redirect URI) are correctly set in the plugin settings.
Has anyone else experienced this issue after upgrading?
Is there a known change in the ORCID API or the OJS plugin between 3.3 and 3.4 that requires a different configuration?
Any advice would be very welcome.
Thanks!