<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: Keycloak-js client with Quasar (now updated for v2)	</title>
	<atom:link href="https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/</link>
	<description>Webentwicklung und sonstiger Unsinn :) Web development and other nonsense :)</description>
	<lastBuildDate>Tue, 11 Nov 2025 04:55:02 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-50871</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Tue, 13 Sep 2022 12:20:01 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-50871</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-50742&quot;&gt;Benoit&lt;/a&gt;.

It&#039;s not working. It redirects to localhost#state and not back to the app]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not working. It redirects to localhost#state and not back to the app</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-50751</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Sat, 20 Aug 2022 12:37:21 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-50751</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-50742&quot;&gt;Benoit&lt;/a&gt;.

It&#039;s a start, but this is only half of it.

 redirectUri: `${process.env.VUE_APP_PACKAGE_ID}://home`,

you don&#039;t explain what goes there.
How does the adapter know the app &quot;domain&quot;?

From the keycloak documentation:
&lt;code&gt;


You can activate the native mode by passing the adapter type cordova-native to the init method:

keycloak.init({
    adapter: &#039;cordova-native&#039;
})

This adapter required two additional plugins:

    cordova-plugin-browsertab: allows the app to open webpages in the system’s browser

    cordova-plugin-deeplinks: allow the browser to redirect back to your app by special URLs

&lt;/code&gt;

I don&#039;t see them in your package.json .

Did you test that this works?]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a start, but this is only half of it.</p>
<p> redirectUri: <code>${process.env.VUE_APP_PACKAGE_ID}://home</code>,</p>
<p>you don&#8217;t explain what goes there.<br />
How does the adapter know the app &#8220;domain&#8221;?</p>
<p>From the keycloak documentation:</p><!-- Urvanov Syntax Highlighter v2.9.0 -->

		<div id="urvanov-syntax-highlighter-69c8a8544a025994715861" class="urvanov-syntax-highlighter-syntax crayon-theme-github urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-mac print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
		
			<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title"></span>
			<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button urvanov-syntax-highlighter-nums-button" title="Toggle Line Numbers"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-plain-button" title="Toggle Plain Code"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-wrap-button" title="Toggle Line Wrap"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-expand-button" title="Expand Code"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-copy-button" title="Copy"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-popup-button" title="Open Code In New Window"><div class="urvanov-syntax-highlighter-button-icon"></div></div></div></div>
			<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
			<div class="urvanov-syntax-highlighter-plain-wrap"><textarea wrap="soft" class="urvanov-syntax-highlighter-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
You can activate the native mode by passing the adapter type cordova-native to the init method:

keycloak.init({
    adapter: 'cordova-native'
})

This adapter required two additional plugins:

    cordova-plugin-browsertab: allows the app to open webpages in the system’s browser

    cordova-plugin-deeplinks: allow the browser to redirect back to your app by special URLs</textarea></div>
			<div class="urvanov-syntax-highlighter-main" style="">
				<table class="crayon-table">
					<tr class="urvanov-syntax-highlighter-row">
				<td class="crayon-nums " data-settings="show">
					<div class="urvanov-syntax-highlighter-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a025994715861-11">11</div></div>
				</td>
						<td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-1"><span class="crayon-e">You </span><span class="crayon-e">can </span><span class="crayon-e">activate </span><span class="crayon-e">the </span><span class="crayon-m">native</span><span class="crayon-h"> </span><span class="crayon-e">mode </span><span class="crayon-e">by </span><span class="crayon-e">passing </span><span class="crayon-e">the </span><span class="crayon-e">adapter </span><span class="crayon-e">type </span><span class="crayon-v">cordova</span><span class="crayon-o">-</span><span class="crayon-m">native</span><span class="crayon-h"> </span><span class="crayon-st">to</span><span class="crayon-h"> </span><span class="crayon-e">the </span><span class="crayon-e">init </span><span class="crayon-v">method</span><span class="crayon-o">:</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-2">&nbsp;</div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-3"><span class="crayon-v">keycloak</span><span class="crayon-sy">.</span><span class="crayon-e">init</span><span class="crayon-sy">(</span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-4"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">adapter</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-s">'cordova-native'</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-5"><span class="crayon-sy">}</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-6">&nbsp;</div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-7"><span class="crayon-r">This</span><span class="crayon-h"> </span><span class="crayon-e">adapter </span><span class="crayon-e">required </span><span class="crayon-e">two </span><span class="crayon-e">additional </span><span class="crayon-v">plugins</span><span class="crayon-o">:</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-8">&nbsp;</div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-9"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">cordova</span><span class="crayon-o">-</span><span class="crayon-v">plugin</span><span class="crayon-o">-</span><span class="crayon-v">browsertab</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-e">allows </span><span class="crayon-e">the </span><span class="crayon-e">app </span><span class="crayon-st">to</span><span class="crayon-h"> </span><span class="crayon-e">open </span><span class="crayon-e">webpages </span><span class="crayon-st">in</span><span class="crayon-h"> </span><span class="crayon-e">the </span><span class="crayon-i">system</span>’<span class="crayon-i">s</span><span class="crayon-h"> </span><span class="crayon-e">browser</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-10">&nbsp;</div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a025994715861-11"><span class="crayon-e">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">cordova</span><span class="crayon-o">-</span><span class="crayon-v">plugin</span><span class="crayon-o">-</span><span class="crayon-v">deeplinks</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-e">allow </span><span class="crayon-e">the </span><span class="crayon-e">browser </span><span class="crayon-st">to</span><span class="crayon-h"> </span><span class="crayon-e">redirect </span><span class="crayon-e">back </span><span class="crayon-st">to</span><span class="crayon-h"> </span><span class="crayon-e">your </span><span class="crayon-e">app </span><span class="crayon-e">by </span><span class="crayon-e">special </span><span class="crayon-v">URLs</span></div></div></td>
					</tr>
				</table>
			</div>
		</div>
<!-- [Format Time: 0.0002 seconds] -->
<p></p>
<p>I don&#8217;t see them in your package.json .</p>
<p>Did you test that this works?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Benoit		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-50742</link>

		<dc:creator><![CDATA[Benoit]]></dc:creator>
		<pubDate>Thu, 18 Aug 2022 15:10:23 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-50742</guid>

					<description><![CDATA[Also used the dsb-norge/vue-keycloak-js libraries to make keycloak working on Quasar but to make it working on Ios &#038; android devices,  I had to use the Ionic-Keycloak library too. 

Here is the code: https://github.com/marchalb/qkeycloak

I hope it helps ...]]></description>
			<content:encoded><![CDATA[<p>Also used the dsb-norge/vue-keycloak-js libraries to make keycloak working on Quasar but to make it working on Ios &amp; android devices,  I had to use the Ionic-Keycloak library too. </p>
<p>Here is the code: <a href="https://github.com/marchalb/qkeycloak" rel="nofollow ugc">https://github.com/marchalb/qkeycloak</a></p>
<p>I hope it helps &#8230;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48817</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Mon, 27 Sep 2021 13:57:34 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48817</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48389&quot;&gt;Excel&lt;/a&gt;.

updated the post, tyvm for your trouble and the created issues :)

Since I&#039;m not using hash mode (re: your issue on github) I don&#039;t have any issues so far with it]]></description>
			<content:encoded><![CDATA[<p>updated the post, tyvm for your trouble and the created issues 🙂</p>
<p>Since I&#8217;m not using hash mode (re: your issue on github) I don&#8217;t have any issues so far with it</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48391</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Mon, 19 Jul 2021 13:13:35 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48391</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48389&quot;&gt;Excel&lt;/a&gt;.

Hmm :) Thanks for feedback. Once summer has passed I&#039;ll get back to work and probably play with Quasar v2 (and Vue 3 in general).
Right now it&#039;s just too hot here in Croatia.

Thanks for posting a link to your Github issue regarding this in v2. Let&#039;s hope someone from their team can help with it.
Being stuck on the redirection URL like this means something failed.
Check console log, http requests and responses. I usually have 3rd party cookies disabled and that also plays a role.
Not using https on the keycloak server side might also be an issue since OIDC requires HTTPS and Chrome especially can be a princess when it comes to http and https and especially localhost.]]></description>
			<content:encoded><![CDATA[<p>Hmm 🙂 Thanks for feedback. Once summer has passed I&#8217;ll get back to work and probably play with Quasar v2 (and Vue 3 in general).<br />
Right now it&#8217;s just too hot here in Croatia.</p>
<p>Thanks for posting a link to your Github issue regarding this in v2. Let&#8217;s hope someone from their team can help with it.<br />
Being stuck on the redirection URL like this means something failed.<br />
Check console log, http requests and responses. I usually have 3rd party cookies disabled and that also plays a role.<br />
Not using https on the keycloak server side might also be an issue since OIDC requires HTTPS and Chrome especially can be a princess when it comes to http and https and especially localhost.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Excel		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48389</link>

		<dc:creator><![CDATA[Excel]]></dc:creator>
		<pubDate>Mon, 19 Jul 2021 09:32:49 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48389</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48346&quot;&gt;Darko Luketic&lt;/a&gt;.

Thank you for helping :)

I realized it to late that this is only for Quasar v.1.

I tried to create a Version for Quasar v.2. It works with only one redirection error. 

https://github.com/quasarframework/quasar/issues/10062]]></description>
			<content:encoded><![CDATA[<p>Thank you for helping 🙂</p>
<p>I realized it to late that this is only for Quasar v.1.</p>
<p>I tried to create a Version for Quasar v.2. It works with only one redirection error. </p>
<p><a href="https://github.com/quasarframework/quasar/issues/10062" rel="nofollow ugc">https://github.com/quasarframework/quasar/issues/10062</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48346</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Tue, 13 Jul 2021 07:27:47 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48346</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48284&quot;&gt;Excel&lt;/a&gt;.

On 2nd thought I see all those //tslint comments so you&#039;re using typescript.
I&#039;m not using typescript with Quasar so it&#039;s likely you have to define or find the definition of the object passed in the initializer function.

Something like 
{ Vue, router, store, app } as PluginInitializerObject

But you&#039;ll have to ask the Quasar guys for details.]]></description>
			<content:encoded><![CDATA[<p>On 2nd thought I see all those //tslint comments so you&#8217;re using typescript.<br />
I&#8217;m not using typescript with Quasar so it&#8217;s likely you have to define or find the definition of the object passed in the initializer function.</p>
<p>Something like<br />
{ Vue, router, store, app } as PluginInitializerObject</p>
<p>But you&#8217;ll have to ask the Quasar guys for details.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48345</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Tue, 13 Jul 2021 07:05:34 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48345</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48284&quot;&gt;Excel&lt;/a&gt;.

And you use it like
&lt;code&gt;
&lt;template&gt;
  &lt;div&gt;
    &lt;q-card v-if=&quot;this.$keycloak.authenticated&quot; flat square&gt;
      &lt;q-card-section class=&quot;flex&quot;&gt;
        &lt;q-avatar size=&quot;sm&quot;&gt;
          &lt;q-img :src=&quot;profile.image&quot;&gt;&lt;/q-img&gt;
        &lt;/q-avatar&gt;
        &lt;q-space/&gt;
        &lt;q-btn color=&quot;black&quot; flat size=&quot;sm&quot; @click=&quot;$keycloak.logoutFn()&quot; icon=&quot;logout&quot;&gt;Log out&lt;/q-btn&gt;
      &lt;/q-card-section&gt;
      &lt;q-card-section&gt;
        {{$keycloak.tokenParsed.name}}
      &lt;/q-card-section&gt;
      &lt;q-separator inset=&quot;true&quot;/&gt;
    &lt;/q-card&gt;
    &lt;q-card v-else flat square&gt;
      &lt;q-card-section&gt;
        &lt;q-btn class=&quot;full-width&quot; color=&quot;black&quot; icon=&quot;login&quot; label=&quot;Login / Register&quot; @click=&quot;$keycloak.login()&quot;&gt;&lt;/q-btn&gt;
      &lt;/q-card-section&gt;
    &lt;/q-card&gt;
  &lt;/div&gt;
&lt;/template&gt;

&lt;script&gt;
export default {
  name: &#039;ProfileCard&#039;,
  props: {
    profile: {
      type: Object,
      required: true
    }
  }
}
&lt;/script&gt;

&lt;style scoped&gt;
&lt;/style&gt;

&lt;/code&gt;]]></description>
			<content:encoded><![CDATA[<p>And you use it like</p><!-- Urvanov Syntax Highlighter v2.9.0 -->

		<div id="urvanov-syntax-highlighter-69c8a8544a076970221418" class="urvanov-syntax-highlighter-syntax crayon-theme-github urvanov-syntax-highlighter-font-monaco urvanov-syntax-highlighter-os-mac print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
		
			<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title"></span>
			<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="urvanov-syntax-highlighter-mixed-highlight" title="Contains Mixed Languages"></span><div class="crayon-button urvanov-syntax-highlighter-nums-button" title="Toggle Line Numbers"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-plain-button" title="Toggle Plain Code"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-wrap-button" title="Toggle Line Wrap"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-expand-button" title="Expand Code"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-copy-button" title="Copy"><div class="urvanov-syntax-highlighter-button-icon"></div></div><div class="crayon-button urvanov-syntax-highlighter-popup-button" title="Open Code In New Window"><div class="urvanov-syntax-highlighter-button-icon"></div></div></div></div>
			<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
			<div class="urvanov-syntax-highlighter-plain-wrap"><textarea wrap="soft" class="urvanov-syntax-highlighter-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
&lt;template&gt;
  &lt;div&gt;
    &lt;q-card v-if="this.$keycloak.authenticated" flat square&gt;
      &lt;q-card-section class="flex"&gt;
        &lt;q-avatar size="sm"&gt;
          &lt;q-img :src="profile.image"&gt;&lt;/q-img&gt;
        &lt;/q-avatar&gt;
        &lt;q-space/&gt;
        &lt;q-btn color="black" flat size="sm" @click="$keycloak.logoutFn()" icon="logout"&gt;Log out&lt;/q-btn&gt;
      &lt;/q-card-section&gt;
      &lt;q-card-section&gt;
        {{$keycloak.tokenParsed.name}}
      &lt;/q-card-section&gt;
      &lt;q-separator inset="true"/&gt;
    &lt;/q-card&gt;
    &lt;q-card v-else flat square&gt;
      &lt;q-card-section&gt;
        &lt;q-btn class="full-width" color="black" icon="login" label="Login / Register" @click="$keycloak.login()"&gt;&lt;/q-btn&gt;
      &lt;/q-card-section&gt;
    &lt;/q-card&gt;
  &lt;/div&gt;
&lt;/template&gt;

&lt;script&gt;
export default {
  name: 'ProfileCard',
  props: {
    profile: {
      type: Object,
      required: true
    }
  }
}
&lt;/script&gt;

&lt;style scoped&gt;
&lt;/style&gt;</textarea></div>
			<div class="urvanov-syntax-highlighter-main" style="">
				<table class="crayon-table">
					<tr class="urvanov-syntax-highlighter-row">
				<td class="crayon-nums " data-settings="show">
					<div class="urvanov-syntax-highlighter-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-1">1</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-2">2</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-3">3</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-4">4</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-5">5</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-6">6</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-7">7</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-8">8</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-9">9</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-10">10</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-11">11</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-12">12</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-13">13</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-14">14</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-15">15</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-16">16</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-17">17</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-18">18</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-19">19</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-20">20</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-21">21</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-22">22</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-23">23</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-24">24</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-25">25</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-26">26</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-27">27</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-28">28</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-29">29</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-30">30</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-31">31</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-32">32</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-33">33</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-34">34</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-35">35</div><div class="crayon-num crayon-striped-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-36">36</div><div class="crayon-num" data-line="urvanov-syntax-highlighter-69c8a8544a076970221418-37">37</div></div>
				</td>
						<td class="urvanov-syntax-highlighter-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-1"><span class="crayon-o">&lt;</span><span class="crayon-v">template</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-2"><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">div</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-3"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-i">card</span><span class="crayon-h"> </span><span class="crayon-v">v</span><span class="crayon-o">-</span><span class="crayon-st">if</span><span class="crayon-o">=</span><span class="crayon-s">"this.$keycloak.authenticated"</span><span class="crayon-h"> </span><span class="crayon-e">flat </span><span class="crayon-v">square</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-4"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">card</span><span class="crayon-o">-</span><span class="crayon-e">section </span><span class="crayon-t">class</span><span class="crayon-o">=</span><span class="crayon-s">"flex"</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-5"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-e">avatar </span><span class="crayon-v">size</span><span class="crayon-o">=</span><span class="crayon-s">"sm"</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-6"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">img</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-v">src</span><span class="crayon-o">=</span><span class="crayon-s">"profile.image"</span><span class="crayon-o">&gt;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">img</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-7"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">avatar</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-8"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">space</span><span class="crayon-o">/</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-9"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-e">btn </span><span class="crayon-v">color</span><span class="crayon-o">=</span><span class="crayon-s">"black"</span><span class="crayon-h"> </span><span class="crayon-e">flat </span><span class="crayon-v">size</span><span class="crayon-o">=</span><span class="crayon-s">"sm"</span><span class="crayon-h"> </span><span class="crayon-sy">@</span><span class="crayon-v">click</span><span class="crayon-o">=</span><span class="crayon-s">"$keycloak.logoutFn()"</span><span class="crayon-h"> </span><span class="crayon-v">icon</span><span class="crayon-o">=</span><span class="crayon-s">"logout"</span><span class="crayon-o">&gt;</span><span class="crayon-e">Log</span><span class="crayon-h"> </span><span class="crayon-e">out</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">q</span><span class="crayon-o">-</span><span class="crayon-e">btn</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-10"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">q</span><span class="crayon-o">-</span><span class="crayon-e">card</span><span class="crayon-o">-</span><span class="crayon-e">section</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-11"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-e">q</span><span class="crayon-o">-</span><span class="crayon-e">card</span><span class="crayon-o">-</span><span class="crayon-e">section</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-12"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-sy">{</span><span class="crayon-sy">{</span><span class="crayon-sy">$</span><span class="crayon-v">keycloak</span><span class="crayon-sy">.</span><span class="crayon-v">tokenParsed</span><span class="crayon-sy">.</span><span class="crayon-v">name</span><span class="crayon-sy">}</span><span class="crayon-sy">}</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-13"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">card</span><span class="crayon-o">-</span><span class="crayon-v">section</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-14"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-e">separator </span><span class="crayon-v">inset</span><span class="crayon-o">=</span><span class="crayon-s">"true"</span><span class="crayon-o">/</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-15"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">card</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-16"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-i">card</span><span class="crayon-h"> </span><span class="crayon-v">v</span><span class="crayon-o">-</span><span class="crayon-st">else</span><span class="crayon-h"> </span><span class="crayon-e">flat </span><span class="crayon-v">square</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-17"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-v">card</span><span class="crayon-o">-</span><span class="crayon-v">section</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-18"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-v">q</span><span class="crayon-o">-</span><span class="crayon-e">btn </span><span class="crayon-t">class</span><span class="crayon-o">=</span><span class="crayon-s">"full-width"</span><span class="crayon-h"> </span><span class="crayon-v">color</span><span class="crayon-o">=</span><span class="crayon-s">"black"</span><span class="crayon-h"> </span><span class="crayon-v">icon</span><span class="crayon-o">=</span><span class="crayon-s">"login"</span><span class="crayon-h"> </span><span class="crayon-v">label</span><span class="crayon-o">=</span><span class="crayon-s">"Login / Register"</span><span class="crayon-h"> </span><span class="crayon-sy">@</span><span class="crayon-v">click</span><span class="crayon-o">=</span><span class="crayon-s">"$keycloak.login()"</span><span class="crayon-o">&gt;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">q</span><span class="crayon-o">-</span><span class="crayon-e">btn</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-19"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">q</span><span class="crayon-o">-</span><span class="crayon-e">card</span><span class="crayon-o">-</span><span class="crayon-e">section</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-20"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">q</span><span class="crayon-o">-</span><span class="crayon-e">card</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-21"><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">div</span><span class="crayon-o">&gt;</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-22"><span class="crayon-o">&lt;</span><span class="crayon-o">/</span><span class="crayon-e">template</span><span class="crayon-o">&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-23">&nbsp;</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-24"><span class="crayon-ta">&lt;script&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-25"><span class="crayon-e">export</span><span class="crayon-h"> </span><span class="crayon-st">default</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-26"><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-v">name</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-s">'ProfileCard'</span><span class="crayon-sy">,</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-27"><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-v">props</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-28"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">profile</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-29"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">type</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-t">Object</span><span class="crayon-sy">,</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-30"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">required</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-t">true</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-31"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-32"><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-sy">}</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-33"><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-34"><span class="crayon-ta">&lt;/script&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-35">&nbsp;</div><div class="crayon-line crayon-striped-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-36"><span class="crayon-ta">&lt;style </span><span class="crayon-i ">scoped&gt;</span></div><div class="crayon-line" id="urvanov-syntax-highlighter-69c8a8544a076970221418-37"><span class="crayon-ta">&lt;/style&gt;</span></div></div></td>
					</tr>
				</table>
			</div>
		</div>
<!-- [Format Time: 0.0009 seconds] -->
<p></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darko Luketic		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48344</link>

		<dc:creator><![CDATA[Darko Luketic]]></dc:creator>
		<pubDate>Tue, 13 Jul 2021 07:00:57 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48344</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48284&quot;&gt;Excel&lt;/a&gt;.

1. You use silent-check-sso.html to silently refresh the token before expiration in the background. That file is referenced in the keycloak.js file.

2. Line 4 in keycloak.js you pass the `{Vue,router,store,app}` object so there Vue should be referenced. You don&#039;t have to import Vue in this file since the reference is passed in this object.

Only reason I can think of is that you&#039;re using Quasar v2 and this is for Quasar v1. I have not done anything with v2 yet.]]></description>
			<content:encoded><![CDATA[<p>1. You use silent-check-sso.html to silently refresh the token before expiration in the background. That file is referenced in the keycloak.js file.</p>
<p>2. Line 4 in keycloak.js you pass the <code>{Vue,router,store,app}</code> object so there Vue should be referenced. You don&#8217;t have to import Vue in this file since the reference is passed in this object.</p>
<p>Only reason I can think of is that you&#8217;re using Quasar v2 and this is for Quasar v1. I have not done anything with v2 yet.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Excel		</title>
		<link>https://blog.icod.de/2021/02/25/keycloak-js-client-with-quasar/#comment-48284</link>

		<dc:creator><![CDATA[Excel]]></dc:creator>
		<pubDate>Sun, 04 Jul 2021 15:06:27 +0000</pubDate>
		<guid isPermaLink="false">https://blog.icod.de/?p=1540#comment-48284</guid>

					<description><![CDATA[Thanks for the helpful post. 

I tried also to connect kecloak-js with quasar by using our tutorial but i cant get it work...

By using your code:
#boot/keycloak.js#
import VueKeyCloak from &#039;@dsb-norge/vue-keycloak-js&#039;
import axios from &#039;axios&#039;

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export default async ({ Vue, router, store, app }) =&#062; {
  // eslint-disable-next-line @typescript-eslint/require-await
  async function tokenInterceptor () {
    axios.interceptors.request.use(config =&#062; {
      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-template-expressions
      config.headers.Authorization = `Bearer ${Vue.prototype.$keycloak.token}`
      return config
    }, error =&#062; {
      return Promise.reject(error)
    })
  }

  return new Promise(resolve =&#062; {
    // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
    Vue.use(VueKeyCloak, {
      init: {
        onLoad: &#039;login-required&#039;, // or &#039;check-sso&#039;
        flow: &#039;standard&#039;,
        pkceMethod: &#039;S256&#039;,
        silentCheckSsoRedirectUri: window.location.origin + &#039;/silent-check-sso.html&#039;,
        checkLoginIframe: false // otherwise it would reload the window every so seconds
      },
      config: {
        url: &#039;url&#039;,
        realm: &#039;realm&#039;,
        clientId: &#039;clientId&#039;
      },
      // eslint-disable-next-line @typescript-eslint/no-unused-vars
      onReady: (keycloak) =&#062; {
        void tokenInterceptor()
        resolve()
      }
    })
  })
}
###

by using this i get console error:
[Quasar] boot error: TypeError: Vue is undefined

Also i dont get it, why you use &#039;silent-check-sso.html&#039; instead of redirecting directly to the mainpage

And i cant read out how to use it... maybe iam using it wrong:
###

  
    
  



import {
  defineComponent
} from &#039;vue&#039;;

export default defineComponent({
  name: &#039;LoginComponent&#039;
});

###

Additionally the auth token didnt get refreshed like 
###
setInterval(() =&#062; {
      keycloak
        // If token is expiring in that many secs, from now, refresh it
        .updateToken(70)
        .then((refreshed) =&#062; {
          if (refreshed) {
            console.log(&quot;Keycloak Token refreshed&quot; + refreshed);
          } else {
            console.log(
              &quot;Keycloak Token not refreshed, valid for another &quot; +
                Math.round(
                  keycloak.tokenParsed.exp +
                    keycloak.timeSkew -
                    new Date().getTime() / 1000
                ) +
                &quot; seconds&quot;
            );
          }
        })
        .catch(() =&#062; {
          console.log(&quot;Failed to refresh Keycloak Token&quot;);
        });
      // Recheck if the token is expired in order to refresh it (millis)
    }, 60000);
### from https://github.com/quasarframework/quasar/issues/4758

Have a great day! :)]]></description>
			<content:encoded><![CDATA[<p>Thanks for the helpful post. </p>
<p>I tried also to connect kecloak-js with quasar by using our tutorial but i cant get it work&#8230;</p>
<p>By using your code:<br />
#boot/keycloak.js#<br />
import VueKeyCloak from &#8216;@dsb-norge/vue-keycloak-js&#8217;<br />
import axios from &#8216;axios&#8217;</p>
<p>// eslint-disable-next-line @typescript-eslint/no-unused-vars<br />
export default async ({ Vue, router, store, app }) =&gt; {<br />
  // eslint-disable-next-line @typescript-eslint/require-await<br />
  async function tokenInterceptor () {<br />
    axios.interceptors.request.use(config =&gt; {<br />
      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-template-expressions<br />
      config.headers.Authorization = <code>Bearer ${Vue.prototype.$keycloak.token}</code><br />
      return config<br />
    }, error =&gt; {<br />
      return Promise.reject(error)<br />
    })<br />
  }</p>
<p>  return new Promise(resolve =&gt; {<br />
    // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access<br />
    Vue.use(VueKeyCloak, {<br />
      init: {<br />
        onLoad: &#8216;login-required&#8217;, // or &#8216;check-sso&#8217;<br />
        flow: &#8216;standard&#8217;,<br />
        pkceMethod: &#8216;S256&#8217;,<br />
        silentCheckSsoRedirectUri: window.location.origin + &#8216;/silent-check-sso.html&#8217;,<br />
        checkLoginIframe: false // otherwise it would reload the window every so seconds<br />
      },<br />
      config: {<br />
        url: &#8216;url&#8217;,<br />
        realm: &#8216;realm&#8217;,<br />
        clientId: &#8216;clientId&#8217;<br />
      },<br />
      // eslint-disable-next-line @typescript-eslint/no-unused-vars<br />
      onReady: (keycloak) =&gt; {<br />
        void tokenInterceptor()<br />
        resolve()<br />
      }<br />
    })<br />
  })<br />
}<br />
###</p>
<p>by using this i get console error:<br />
[Quasar] boot error: TypeError: Vue is undefined</p>
<p>Also i dont get it, why you use &#8216;silent-check-sso.html&#8217; instead of redirecting directly to the mainpage</p>
<p>And i cant read out how to use it&#8230; maybe iam using it wrong:<br />
###</p>
<p>import {<br />
  defineComponent<br />
} from &#8216;vue&#8217;;</p>
<p>export default defineComponent({<br />
  name: &#8216;LoginComponent&#8217;<br />
});</p>
<p>###</p>
<p>Additionally the auth token didnt get refreshed like<br />
###<br />
setInterval(() =&gt; {<br />
      keycloak<br />
        // If token is expiring in that many secs, from now, refresh it<br />
        .updateToken(70)<br />
        .then((refreshed) =&gt; {<br />
          if (refreshed) {<br />
            console.log(&#8220;Keycloak Token refreshed&#8221; + refreshed);<br />
          } else {<br />
            console.log(<br />
              &#8220;Keycloak Token not refreshed, valid for another &#8221; +<br />
                Math.round(<br />
                  keycloak.tokenParsed.exp +<br />
                    keycloak.timeSkew &#8211;<br />
                    new Date().getTime() / 1000<br />
                ) +<br />
                &#8221; seconds&#8221;<br />
            );<br />
          }<br />
        })<br />
        .catch(() =&gt; {<br />
          console.log(&#8220;Failed to refresh Keycloak Token&#8221;);<br />
        });<br />
      // Recheck if the token is expired in order to refresh it (millis)<br />
    }, 60000);<br />
### from <a href="https://github.com/quasarframework/quasar/issues/4758" rel="nofollow ugc">https://github.com/quasarframework/quasar/issues/4758</a></p>
<p>Have a great day! 🙂</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
