反应本机链接侦听器?

时间:2020-06-22 13:32:00

标签: react-native expo react-native-linking bankid

说明:

内置应用程序,需要实现瑞典银行ID 。这意味着,当用户按下按钮时,瑞典银行ID 应用会打开,并且在用户登录后, 瑞典BankID 应用将用户返回到我的应用(它将自动执行),我需要在其中检索数据(无论登录是否成功)。

需要完成的事情:

在我的应用程序中在设备上

打开瑞典银行ID 。需要能够从我的应用程序中的瑞典BankID 应用接收有效载荷(瑞典BankID自动将用户发送回我的应用)

当前代码:

const url = `https://app.bankid.com/?${autoStartToken}`;
            const supported = await Linking.canOpenURL(url);

            if (supported) {
                const answer = await Linking.openURL(url);
            } else {
                Alert.alert(`Don't know how to open this URL: ${url}`);
            }

当前,瑞典BankID 应用已正确打开,我的问题是,是否可以从其他应用接收数据?我知道这可以通过本机模块(运行Objective-C等)来实现,但是我正在使用Expo Client,并且不希望弹出。

我还没有发现任何暗示React-Native可以收听其他应用程序的东西。

2 个答案:

答案 0 :(得分:0)

您可以使用expo WebBrowser打开URL。 对于身份验证,您将要使用WebBrowser.openAuthSessionAsync,如果您只想打开网页WebBrowser.openBrowserAsync, 例子:

  ...
    import * as WebBrowser from 'expo-web-browser';
    ....
    
    const handleLinkAsync = async () => {
      let result = await WebBrowser.openBrowserAsync('https://google.com');
      console.log(result)
    };

答案 1 :(得分:0)

由于BankID应用程序甚至可以在另一台设备上(如果您将URL作为QR码显示),因此很难与该应用程序进行通信。另外,从隐私的角度来看,该应用程序不应泄露很多信息。

您可以做的是使用“ redirect”参数通过应用程序“反弹”信息。当您想绑定到现有会话时,这特别有用。但是,有一些警告,尤其是在使用多个浏览器时,请确保阅读Relying Party Gudelines