我有一个爱奥尼亚项目,它仍然使用
Cordova@10.0.0
,
angular@5.2.11
和
typescript: ^3.9.5
&
node@10
我目前正在尝试实现KeyClope身份验证。
下面是这些步骤
Official Keycloak
我正试图在我的应用程序中实现这一点。
我所做的步骤:
-
添加
"cordova-plugin-inappbrowser": "5.0.0"
对我的
devDependencies
在
package.json
-
添加
"keycloak-js": "^15.0.2"
对我的
dependencies
在
包裹json
-
更新了我的
tsconfig.json
我补充说
"ES2018"
在里面
compilerOptions - lib
-
更新了我的
tsconfig。json
我补充说
es2015
在里面
compilerOptions - module
-
更新了我的
tsconfig。json
我补充说
es6
在里面
compilerOptions - target
-
在
config.xml
升级了iOS目标版本
<preference name="deployment-target" value="14.0" />
该应用程序构建良好。
加载应用程序时,safari模拟器控制台中出现以下错误:
Error:
Uncaught (in promise): TypeError: Promise.race([promise, timeoutPromise]).finally is not a function.
(In 'Promise.race([promise, timeoutPromise]).finally(function () { clearTimeout(timeoutHandle); })',
'Promise.race([promise, timeoutPromise]).finally' is undefined)
引发这一问题的承诺可以在官方网站上找到
Github Repo
从钥匙斗篷。将其更改为
.then(..)
它不再抛出错误。但手动更改依赖项并不是一个真正可行的选择。
我是错过了什么还是这是一个真正的错误?我在网上找不到任何有用的东西。
如何初始化KeyClope:
public keycloak: Keycloak.KeycloakInstance;
this.keycloak = Keycloak({
clientId: 'webapp',
realm: 'master',
url: 'http://localhost:8080/auth/'
});
this.keycloak.init({
adapter: 'cordova'
})
输出
ionic info
:
Ionic:
Ionic CLI : 6.17.0 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.4
Cordova:
Cordova CLI : 10.0.0
Cordova Platforms : android 7.1.4, ios 6.2.0
Cordova Plugins : no whitelisted plugins (18 plugins total)
Utility:
cordova-res : 0.15.3
native-run (update available: 1.4.1) : 1.4.0
System:
ios-deploy : 1.11.4
ios-sim : 8.0.2
NodeJS : v10.24.1 (/usr/local/Cellar/node@10/10.24.1_1/bin/node)
npm : 6.14.12
OS : macOS Big Sur
Xcode : Xcode 13.0 Build version 13A233
和
navigator.userAgend
为正在使用的safari版本提供以下信息:
"Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
我还想提一下。在模拟器上Cordova应用程序的Web Inspector中
new Promise(() => {}).finally;
它会回馈
undefined
但当我在模拟器上Safari的Web Inspector中执行此操作时,它会返回一个有效的输出。