监听 React-Native Safari 重定向回应用程序

问题描述 投票:0回答:1

我有一个 React Native 应用程序,它可以在 safari 中打开 Oauth 登录门户:

const handleLogin = () => {
    Linking.canOpenURL('myappname://myapproute').then((supported) => {
      if (supported) {
        console.log('can open url');
        Linking.openURL(myurl);
      } else {
        console.log("Don't know how to open URI: " + 'myappname:myapproute');
      }
    });
  };

myurl
内部,我还提供了一个重定向URI,
myappname://myapproute

在 Oauth 中授权后,有一个按钮可以返回我的应用程序。正常的 iOS 弹出窗口“在“myappname”中打开此页面?”显示,单击时重定向回我的应用程序。

我需要监听打开我的应用程序的回调,并提取可能已提供的相关参数。为此,我注册了一个事件监听器:

useEffect(() => {
    const handleOpenURL = (event) => {
      console.log(`event is: ${event}`);
    };
    Linking.addEventListener('url', handleOpenURL);

       return () => {
      Linking.removeEventListener('url', handleOpenURL);
    };
  }, []);

但是,尽管我的应用程序已打开,但我的处理程序从未运行。我可能做错了什么?我确保我的听众已注册。只有一次我能够查看提取的参数,但那是在摆弄应用程序时,我无法复制它。

javascript react-native oauth callback deep-linking
1个回答
0
投票

如果您使用反应导航,您可以通过定义 NavigationContainer 链接属性来使用不同的方法

const config = {
  screens: {
    Home: {
      screens: {
        Login: 'users/:token',
      },
    },
  },
};
© www.soinside.com 2019 - 2024. All rights reserved.