Itgenobr019 on use of headless OAuth on Exact Online

When running Invantive Data Hub using 20.1.517 with Implicit Grant Flow, an error occurs:

itgenobr019: A connection to the database ‘…’ could not be established as user ‘…’.
Could not log on to Exact Online using user name and password. Reason is unknown.

Instructions have been followed as given on Circumvent two-step verification and refresh tokens on Exact Online using Data Hub

The HTML found in trace contains text below.

How can I activate the Implicit Grant Flow with Data Hub?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
	<head>
		<title>Exact Online</title>
		<meta name="save" content="history" />
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
		<link id="ExactCSS" rel="stylesheet" type="text/css" href="/content/styles/ExactFuel/css?v=isGD4RXaR5afN0EFD4hMayt0-_XPeror31jlozhCafY1.css"></link>
		<link id="OAuthCSS" rel="stylesheet" type="text/css" href="/content/styles/OAuth/css?v=hy8uKhApY0O-NFhT_IQn6xCtWMBGbLTcpLJWM6TdkU81.css"></link>
	</head>
	<body>
		<form method="post" action="./auth?response_type=token&amp;client_id=57275dfd-...-2e6646e0bb45&amp;redirect_uri=https%3a%2f%2feolclientredirect.invantive.com&amp;state=423dbd4b-979b-4961-8d83-ad6ac3b2f96c" id="PublicOAuth2Form" class="OAuth2Form oauth"><div id="WaitMessage" class="WaitMessage" style="opacity:0.3;"><table><tr><td><div id="WaitMessageImg"><img alt="" src="/docs/images/icon-wait.gif" /></div><div>Even geduld a.u.b...</div></td></tr></table></div>
<div class="aspNetHidden">
<input type="hidden" name="CSRFToken" id="CSRFToken" value="Hg5Jx...DOv" />
<input type="hidden" name="sysFocus" id="sysFocus" value="" />
<input type="hidden" name="_Division_" id="_Division_" value="1" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="IOXQe4...==" />
</div>

<input type='hidden' name='SysNoBack' id='SysNoBack' class='saveHistory'/>
<script src="/content/scripts/base/js?v=9Zmm3m4caygFNxqj8FieFkX2Y5hVTrUWeGSD0LgyQAs1.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
/// <reference path="../../content/scripts/syscontrols/syselement.js" />
function SysDivision() {
	var div = new SysElement('_Division_');
	if (div.empty) {
		return 1;
	}
	else {
		return Number(div.Value());
	}
}function SysCSL() {return 1;}//]]>
</script>

<script src="/content/scripts/SysComponents/js?v=oP-t6fgm232YJE8t3-7uKt0YTzbdEulB7OSC6QkrFXQ1.js" type="text/javascript"></script>
<script src="/content/scripts/Qowaiv/js?v=heugIiCVwRHt2KMXu1coJut5K8NWmQQoV1dxK63tBcw1.js" type="text/javascript"></script>
<script src="/content/scripts/React/js?v=n4Ma5IZYv8Oot-ZKh_Z8_LBHZGsbRgmUsPxD7v_p2Gc1.js" type="text/javascript"></script>
<script src="/content/scripts/SysControls/js?v=hNdZQRtsD0JUJP240ojGRPjOZ6wd5OM3AUz-vtoG1c41.js" type="text/javascript"></script>
<script src="/content/scripts/DatePicker/js?v=bESb3vXLsqd_TmVp7OHwg7WL6bvovwqmFfC35jn7axg1.js" type="text/javascript"></script>
<script src="/content/scripts/SysGrid/js?v=uFXAtwd6d7vJXTuCowAw2luYSnAMXxiFAoXXbgDt9081.js" type="text/javascript"></script>
<script src="/content/scripts/SalesforceHelp/js?v=qUH9z0WNGyqpDKIOI2cYf5JjvgDvo2ip2Miv1ma3niY1.js" type="text/javascript"></script><script type="text/javascript">
//<![CDATA[

function SysUserName() { return 'Exact Webguest account'; }function SysDateFormat(expr) {
var sdate = expr.getDate();
if ( sdate.toString(10).length == 1 ) sdate = '0' + sdate;
var smonth = expr.getMonth() + 1;
if ( smonth.toString(10).length == 1 ) smonth = '0' + smonth;
var syear = expr.getFullYear();
return(sdate + '-' + smonth + '-' + syear);
}
var sysFormatNegative=1;var sysFormatSep=',';var sysFormatDecSep='.';var sysFormatDateSep='-';var sysFormatDate='1';var sysDateMask='99-99-9999';var sysDateFormatString='dd-mm-yyyy';var sysLanguageCode='NL';var sysHelpUrl='https://support.exactonline.com/community/s/knowledge-base';var sysSeed=Qowaiv.Guid.parse('b4ed4a71-dc38-4160-bd7c-0790e52843a4');
//]]>
</script>

<div class="aspNetHidden">

	<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="F7A6CF1B" />
	<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
	<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
	<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="NIspWFx...==" />
</div>
			<input type="hidden" name="Attempts" id="Attempts" value="0" class="saveHistory" />
			<input type="hidden" name="Action" id="Action" value="0" class="saveHistory" />
			<div class="enhanced-navigation">
				<div class="enhanced-navigation__top">
					<span class="oauth__header">
						Inloggen
					</span>
					
				</div>
				<div class="enhanced-navigation__bottom">
					<div id="EnhancedLogo" class="enhanced-logo">
						<div class="enhanced-logo__logo">
							<div class="oauth__header-logo" />
						</div>
					</div>
				</div>
			</div>
			<div class="oauth__content">
				<br />
				
				<div id="LoginForm" class="login-form" onkeypress="javascript:return WebForm_FireDefaultButton(event, &#39;LoginButton&#39;)">
	
					<div class="ex-margin-bottom--16 oauth__input">
						<input type="text" data-displayableval="true" data-onclearvalue="$('#UserNameField').val('');" name="UserNameField" id="UserNameField" placeholder="Gebruikersnaam" size="20" title="Geef een gebruikersnaam." onkeydown="return true;SysInputKeyDown(event, true);" onblur="SysInputOnBlur(this);" onfocus="SysInputOnFocus(this);" class="saveHistory" />

					</div>
					<div class="ex-margin-bottom--16 oauth__input">
						<input type="password" name="PasswordField" id="PasswordField" placeholder="Wachtwoord" onkeydown="return true;SysInputKeyDown(event, true);" autocomplete="new-password" onblur="SysInputOnBlur(this);" onfocus="SysInputOnFocus(this);" class="saveHistory" />
					</div>
					<div class="ex-margin-bottom--16 oauth__input">
						
					</div>
					<div class="ex-margin-bottom--16">
						
						<input type="submit" name="LoginButton" value="Inloggen" onclick="return PreventMultiSubmit();" id="LoginButton" class="ex-btn ex-btn--primary ex-btn--large ex-btn--full LoginButton" />
						<input type="hidden" name="hf2StepLoginStep" id="hf2StepLoginStep" value="0" class="saveHistory" />
					</div>
					<div class="space"></div>
				
</div>
			</div>
			<style>
   ...
			</style>
			<script type="text/javascript">
...
			</script>
		
<script type="text/javascript">
...
</script>

<script src="/WebResource.axd?d=pynGkm...20qE1&amp;t=637461017481343508" type="text/javascript"></script>


<script type="text/javascript">
...
</script>
<script type="text/javascript">
...
</script>
<script type="text/javascript">
...
</script><script type="text/javascript">
...
</script><script type="text/javascript">
...
</script><a onfocus="SysFocusFirst()" href="#"></a></form>
	</body>
</html>

Releases from 20.1.526 onward better show the actual text of the error message. Which in this case reads:

Error itgenobr111: A connection to the database ‘L120\invoicing3’ could not be established as user ‘’.
De ingevoerde verificatiecode is onjuist of verlopen. Probeer het nog een keer. U kunt het nog 8 keer proberen. Daarna wordt uw account tijdelijk (5 minuten) geblokkeerd.

Apparently, not the correct secret key for TOTP was used.

Other possible messages are:

Error itgenobr112: A connection to the database ‘L120\invoicing3’ could not be established as user ‘’.
Het inloggen is mislukt. Controleer uw gebruikersnaam en wachtwoord. Let op: uw gebruikersnaam en e-mailadres kunnen hetzelfde zijn. Na 5 mislukte pogingen wordt uw gebruikersaccount voor ten minste 5 minuten geblokkeerd.

Other error codes are itgenobr108 and itgenobr109.