【问题标题】:Authentication challenge in Webview component of React NativeReact Native 的 Webview 组件中的身份验证挑战
【发布时间】:2017-05-23 02:22:53
【问题描述】:

我正在尝试在需要凭据的反应本机 webview 中加载 URL。通常,当我们在 Safari 和 Chrome 等浏览器中打开此 URL 时,它会给我们一个弹出窗口来输入凭据。不知道如何在 React-Native 中处理它?

【问题讨论】:

    标签: webview react-native


    【解决方案1】:

    我们的 React Native 应用程序需要 LinkedIn 身份验证,我们找不到使用 WebView 组件的方法。

    可能很有可能,但是,我将重点介绍我们提出的解决方案。这些步骤适用于 iOS React Native 应用程序,Android 的步骤会有所不同,但概念是相同的。这也确实需要一些服务器配置。

    我们创建了一个 URL 类型。在 XCode 中,选择您的项目并单击 Info 选项卡。滚动到底部以查看 URL 类型。填写identifierURL Schemes。记住您为URL Schemes 设置的内容。对于这个例子,我们将使用myscheme

    当应用程序打开时,我们使用Linking 在 Safari 中打开 URL。

    Linking.openURL('https://foo.bar');
    

    然后用户可以通过网站登录,一旦登录,您可以将您的用户重定向回。

    myscheme://name=Dan
    

    myscheme 与您在 Xcode 中输入的 URL Scheme 匹配。只要您安装了应用程序并且方案匹配,那么您的应用程序就会打开。

    您可以在:// 之后添加任何信息负载。

    在你的 React 应用中,你可以注册

    componentWillMount() {
      Linking.addEventListener('url', this.handleOpenURL);
    }
    
    componentWillUnmount() {
      Linking.removeEventListener('url', this.handleOpenURL);
    }
    
    handleOpenURL = (event) => {
      const { url } = event;
      if (url.startsWith('myscheme://')) {
        // do something with your data.
      }
    };
    

    【讨论】:

    • 这似乎是一个很棒的解决方法,但遗憾的是我没有服务器端访问权限,因为我试图在我的 react-native 应用程序上打开一个 Intranet URL,并且该链接支持 ADFS 身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多