ORCID plugin error after upgrade – “An authorization code must be supplied” 3.3 to 3.4

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!

Hey @amdelvaz, thanks for sharing this. There shouldn’t be any further changes needed.

I would recommend removing and re-adding the ORCID credentials, ensuring you have it configured correctly to rule out any issues there. I would also make sure you are using the latest version of the plugin.

You also mention this happened when a user tries to connect their ORCID. Could you share exactly where/how the user is trying to link their ORCID?

Thanks.

Regards,

Erik
PKP Team