当前位置: 首页 > 知识库问答 >
问题:

Keycloak Javascript 未能初始化

干照
2023-03-14

我正在尝试将Keycloak与JavaScript一起使用,这些是我遵循的步骤。

>

  • 我在KeyCloak管理面板中创建了一个客户端。链接到图像

    我将 .json 文件复制到我的 apache 文件夹中。

        {
          "realm": "master",
          "auth-server-url": "http://localhost:8080/auth",
          "ssl-required": "external",
          "resource": "test",
          "public-client": true,
          "confidential-port": 0
        }
    

    我转到我的索引.html并添加这两行来调用脚本。

     <script src="keycloak.js"></script>
     <script>
         function initKeycloak() {
             const keycloak = new Keycloak();
             keycloak.init().then(function(authenticated) {
                 alert(authenticated ? 'authenticated' : 'not authenticated');
             }).catch(function() {
                 alert('failed to initialize');
             });
         }
     </script>
    

    这就是我在myLogic中所拥有的.js

    var keycloak = new Keycloak();
    
    function initKeycloak() {
        keycloak.init({onLoad: 'login-required'}).then(function() {
            constructTableRows(keycloak.idTokenParsed);
            pasteToken(keycloak.token);
        }).catch(function() {
            alert('failed to initialize');
        });
    }
    
    function constructTableRows(keycloakToken) {
        document.getElementById('row-username').innerHTML = keycloakToken.preferred_username;
        document.getElementById('row-firstName').innerHTML = keycloakToken.given_name;
        document.getElementById('row-lastName').innerHTML = keycloakToken.family_name;
        document.getElementById('row-name').innerHTML = keycloakToken.name;
        document.getElementById('row-email').innerHTML = keycloakToken.email;
    }
    
    function pasteToken(token){
        document.getElementById('ta-token').value = token;
        document.getElementById('ta-refreshToken').value = keycloak.refreshToken;
    }
    
    var refreshToken = function() {
        keycloak.updateToken(-1)
    

    我尝试下载文件密钥斗篷.js并将其直接放在我的根文件夹中,但发生了同样的问题。这些是我尝试打开页面时收到的消息

  • 共有1个答案

    法烨华
    2023-03-14

    我对第 1 点感到困惑,keycloak 会自动从 Apache 文件夹中的 json 文件加载配置吗?让我们假设不,我认为你的问题出在哪里,你没有将配置参数传递给 keycloak 构造函数

    如何初始化钥匙斗篷:

    const initKeycloak = async () => {
        //you can hardcode these values for now just to see if everything works
        const config = { url: 'http://localhost:8080/auth', realm: 'master', clientId: 'test'};
    
        const keycloak = new Keycloak(config);
    
        await keycloak
                .init({ onLoad: 'login-required' })
                .then(isAuthenticated => {
                    //user is authenticated
                 })
                 .catch(error => { console.log('keycloak error', error); });
    }
    
    

    另一个重要的事情是keycloak-js库版本(在package.json中)必须与keycloak服务器版本匹配。有时不同的版本可以相互配合,但最佳做法始终是 keycloak-js 版本与 keycloak 服务器版本匹配。

    你也可以看看这里:https://github.com/m-s7/react-core/blob/devel/src/services/keycloak-service.ts 这是我使用工作 keycloak-js 实现的存储库。

     类似资料:
    • 问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事

    • 所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!

    • 我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我

    • 以下是我的配置 java版本“1.8.0_101”java(TM)SE运行时环境(构建1.8.0_101-b13)java热点(TM)64位服务器虚拟机(构建25.101-b13,混合模式) 使用Apache http客户端v4.4调用Restful服务,服务URL具有有效的证书(SHA2) 我们使用apache http客户端调用服务。下面是代码 服务调用是间歇性失败的,有一个批处理过程在一个循

    • 我正在尝试运行一个Spring项目。pom.xml: 结果是这样的: 2017-08-17 01:11:01.405信息9156---[restartedMain]org.ocp.TestruleemallApplication:在桌面上启动TestruleemallApplication-PL25CTR,PID 9156(C:\Users\Ilias\DesktoP\TestRuleEmall\

    • 问题内容: 我得到错误: TestCounter.java:115:变量计数器可能尚未初始化counters [i] = new Counter(i); 而且我不知道如何解决它。我知道我的课程“” 有效。下面是我的代码,如果您可以看一下,我将非常高兴。此代码包装在类的main方法中。 问题答案: 您尚未创建数组,只是声明了变量。 您需要这样做: 或类似的东西

    • 在最后一行显示为时出错 :::: 变量结果可能尚未初始化 这是我的代码:

    • 我试图使用Android Studio中的Google Firebase(机器学习工具包)的例子。将图像变量传递到检测器时出错。processImage方法(错误如下所示)。 我怎样才能克服这个错误?我必须使用FirebaseVisionImage。try-catch块中的fromFilePath,但错误消息告诉我image变量可能未初始化。 错误:变量映像可能尚未初始化