查询参数未从深链接中收到 - React Native(Expo)和节点JS

发布于 2025-01-20 12:22:30 字数 1259 浏览 1 评论 0原文

我正在使用 openAuthSessionAsync 调用我的后端并发送 url 以进行深度链接 我已成功重定向回我的应用程序,但我没有获得从后端发送的带有深层链接的查询参数

我的反应本机应用程序端:

 const experiment = async()=>{
        try{
         let result = await WebBrowser.openAuthSessionAsync(`http://myaddress :3901/api/testig?linkingUri=${Linking.createURL(
           "/?",
         )}`,);
         console.log(result)
        }catch(errr){
          console.log(errr)
        }
        
      } 

我的节点js端:

router.get("/testig",(req,res)=>{


    url = req.query.linkingUri

**//url is exp://myaddress:19000/--/?**

    
    res.redirect(url+"?authToken=abc123")

})

我也尝试过在后端对网址进行硬编码,但它只打开应用程序返回但没有参数

并且在控制台的本机反应中我得到这个:

Object:{
"type":"dismiss",
}

更新:通过设置用于链接的事件监听器解决了这个问题,如下所示

const handleDeepLink = (event)=>{
        let data = Linking.parse(event.url)
        setdata(data)
        if(JSON.parse(data.queryParams.isSuccessful) == true)
        {
          props.navigation.navigate("thankyou")
        }
      }
      React.useEffect(()=>{
        Linking.addEventListener("url",handleDeepLink)
        return(()=>{
          Linking.removeEventListener("url")
        })
      },[])

I am using openAuthSessionAsync to do a call to my backend and sending the url for deep linking
I am redirected back successfully to my app but i don't get query parameters that i send from backend with deep link

My react native app side:

 const experiment = async()=>{
        try{
         let result = await WebBrowser.openAuthSessionAsync(`http://myaddress :3901/api/testig?linkingUri=${Linking.createURL(
           "/?",
         )}`,);
         console.log(result)
        }catch(errr){
          console.log(errr)
        }
        
      } 

My node js side:

router.get("/testig",(req,res)=>{


    url = req.query.linkingUri

**//url is exp://myaddress:19000/--/?**

    
    res.redirect(url+"?authToken=abc123")

})

I have also tried hard coding the url in backend but it only opens app back but with no parameters

And in my react native side in console i get this:

Object:{
"type":"dismiss",
}

UPDATE: Solved it by setting up eventListener for LINKING as follows

const handleDeepLink = (event)=>{
        let data = Linking.parse(event.url)
        setdata(data)
        if(JSON.parse(data.queryParams.isSuccessful) == true)
        {
          props.navigation.navigate("thankyou")
        }
      }
      React.useEffect(()=>{
        Linking.addEventListener("url",handleDeepLink)
        return(()=>{
          Linking.removeEventListener("url")
        })
      },[])

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的影子我的梦 2025-01-27 12:22:30

在块中使用trycarch查看错误并使用var url

代码看起来像

router.get("/testig",(req,res)=>{
    try {
        var url = req.query.linkingUri
        return res.redirect(url+"?authToken=abc123")
    } catch (e) {
        console.log(e)
    }
})

use trycarch in the block to see errors and use var url

code lookslike

router.get("/testig",(req,res)=>{
    try {
        var url = req.query.linkingUri
        return res.redirect(url+"?authToken=abc123")
    } catch (e) {
        console.log(e)
    }
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文