首页 > 解决方案 > 在 NativeScript 中 SSO 后如何从 WebView 取回令牌?

问题描述

我正在使用 NativeScript 和 Angular 8 编写应用程序。该应用程序将在 Android 和 iOS 上运行。我正在考虑将单点登录技术应用到我的应用程序中。

我们不会使用 Facebook、Google 等社交方法进行登录,因为我们正在为 B2B 目的编写企业应用程序。

我们将使用 IdentityProvider 和 OpenID Connect。

我将从我的后端服务器获取一个 URL 并将其显示在本地浏览器中,以便客户可以决定他们想要使用的 SSO 服务。

我考虑过使用这个插件来帮助 SSO:https ://market.nativescript.org/plugins/oauth2-oidc-client

我已经实现了一个简单的页面,该页面将使用登录页面定向到 WebView。如何从此 web 视图取回 SSO 令牌?

<ActionBar title="SSO Page" class="action-bar">
    <NavigationButton android.systemIcon="ic_menu_back" (tap)="goBack()"></NavigationButton>
</ActionBar>

<StackLayout class="page">
    <Webview 
        (loadStarted)="loadStarted($event)"
        (loadFinished)="loadFinished($event)"
        src="https://docs.nativescript.org/">
    </Webview>
</StackLayout>

标签: angularnativescriptsingle-sign-on

解决方案


getToken()必须返回 AuthService 上的令牌。您应该能够在homeRoute通话中访问它。

homeRoute: () => {
   console.log(this.authService.getToken());
   this.router.navigate(["/home"], { clearHistory: true });
},

注意:该插件一年没有更新并且仍然使用旧版本的 RxJS,如果您使用的是较新版本的 Angular / RxJS,您可能需要兼容库。


推荐阅读